- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了以下代码,它首先生成一个 0-23 之间的随机值(该值表示一天中的时间,0 表示上午 00:00)。然后它生成 0-6 之间的第二个值,表示日期,其中 0 表示星期日,6 表示星期六。在初始化一天中的时间和星期几后,将调用速度方法来获取汽车在该特定时间的速度。有没有其他方法可以改进编写这段代码的方式。
主要方法:
Random r = new Random();
int time_of_day = r.nextInt(24) + 0;
int day_of_week = r.nextInt(7) + 0;
速度方法:
public static double speed(int time_of_day, int day_of_week) {
double speed = 0;
switch(time_of_day) {
case 0: // 00:00 am
if (day_of_week==0) { //Sun
speed = 24.9;
}else if (day_of_week==1) { // Mon
speed = 26.5;
}else if (day_of_week==2) {// Tues
speed = 26.25;
}else if (day_of_week==3) {// Wed
speed = 27;
}else if (day_of_week==4) {// Thur
speed = 26.25;
}else if (day_of_week==5) {// Fri
speed = 26.25;
}else if (day_of_week==6) {// Sat
speed = 26.25;
}
break;
case 1: // 01:00 am
if (day_of_week==0) {
speed = 25.75;
}else if (day_of_week==1) {
speed = 26.6;
}else if (day_of_week==2) {
speed = 27;
}else if (day_of_week==3) {
speed = 27.1;
}else if (day_of_week==4) {
speed = 26.8;
}else if (day_of_week==5) {
speed = 26.4;
}else if (day_of_week==6) {
speed = 26.75;
}
break;
case 2: // 02:00 am
if (day_of_week==0) {
speed = 26.1;
}else if (day_of_week==1) {
speed = 27.25;
}else if (day_of_week==2) {
speed = 26.35;
}else if (day_of_week==3) {
speed = 26.9;
}else if (day_of_week==4) {
speed = 26.5;
}else if (day_of_week==5) {
speed = 26.55;
}else if (day_of_week==6) {
speed = 26.75;
}
break;
case 3: // 03:00 am
if (day_of_week==0) {
speed = 25.9;
}else if (day_of_week==1) {
speed = 27.2;
}else if (day_of_week==2) {
speed = 27.25;
}else if (day_of_week==3) {
speed = 26.9;
}else if (day_of_week==4) {
speed = 26.75;
}else if (day_of_week==5) {
speed = 26.75;
}else if (day_of_week==6) {
speed = 26.75;
}
break;
case 4: // 04:00 am
if (day_of_week==0) {
speed = 27;
}else if (day_of_week==1) {
speed = 27;
}else if (day_of_week==2) {
speed = 27.25;
}else if (day_of_week==3) {
speed = 27.5;
}else if (day_of_week==4) {
speed = 27.9;
}else if (day_of_week==5) {
speed = 26.95;
}else if (day_of_week==6) {
speed = 27;
}
break;
case 5: // 05:00 am
if (day_of_week==0) {
speed = 28.5;
}else if (day_of_week==1) {
speed = 28.5;
}else if (day_of_week==2) {
speed = 27.75;
}else if (day_of_week==3) {
speed = 27.5;
}else if (day_of_week==4) {
speed = 27.25;
}else if (day_of_week==5) {
speed = 28;
}else if (day_of_week==6) {
speed = 28.5;
}
break;
case 6: // 06:00 am
if (day_of_week==0) {
speed = 27.6; //here
}else if (day_of_week==1) {
speed = 23.5;
}else if (day_of_week==2) {
speed = 23.5;
}else if (day_of_week==3) {
speed = 23.5;
}else if (day_of_week==4) {
speed = 23.25;
}else if (day_of_week==5) {
speed = 23.5;
}else if (day_of_week==6) {
speed = 27.6;
}
break;
case 7: // 07:00 am
if (day_of_week==0) { //S
speed = 27.5; //here
}else if (day_of_week==1) {//M
speed = 20.5;
}else if (day_of_week==2) {//T
speed = 20.15;
}else if (day_of_week==3) {//W
speed = 20.15;
}else if (day_of_week==4) {//T
speed = 20.5;
}else if (day_of_week==5) {//F
speed = 23.8;
}else if (day_of_week==6) {//S
speed = 27.5;
}
break;
case 8: // 08:00 am
if (day_of_week==0) { //S
speed = 26; //here
}else if (day_of_week==1) {//M
speed = 21.5;
}else if (day_of_week==2) {//T
speed = 20.75;
}else if (day_of_week==3) {//W
speed = 21.10;
}else if (day_of_week==4) {//T
speed = 21.10;
}else if (day_of_week==5) {//F
speed = 22.10;
}else if (day_of_week==6) {//S
speed = 25;
}
break;
case 9: // 09:00 am
if (day_of_week==0) { //S
speed = 25.5; //here
}else if (day_of_week==1) {//M
speed = 22.6;
}else if (day_of_week==2) {//T
speed = 21.75;
}else if (day_of_week==3) {//W
speed = 22.40;
}else if (day_of_week==4) {//T
speed = 22;
}else if (day_of_week==5) {//F
speed = 22.15;
}else if (day_of_week==6) {//S
speed = 23.40;
}
break;
case 10: // 10:00 am
if (day_of_week==0) { //S
speed = 24; //here
}else if (day_of_week==1) {//M
speed = 22.25;
}else if (day_of_week==2) {//T
speed = 21.8;
}else if (day_of_week==3) {//W
speed = 22.5;
}else if (day_of_week==4) {//T
speed = 22.25;
}else if (day_of_week==5) {//F
speed = 22.25;
}else if (day_of_week==6) {//S
speed = 22;
}
break;
case 11: // 11:00 am
if (day_of_week==0) { //S
speed = 23; //here
}else if (day_of_week==1) {//M
speed = 22;
}else if (day_of_week==2) {//T
speed = 22;
}else if (day_of_week==3) {//W
speed = 22.25;
}else if (day_of_week==4) {//T
speed = 21.25;
}else if (day_of_week==5) {//F
speed = 21.25;
}else if (day_of_week==6) {//S
speed = 21;
}
break;
case 12: // 12:00 Pm
if (day_of_week==0) { //S
speed = 21.90; //here
}else if (day_of_week==1) {//M
speed = 22.25;
}else if (day_of_week==2) {//T
speed = 21.90;
}else if (day_of_week==3) {//W
speed = 21.75;
}else if (day_of_week==4) {//T
speed = 21.50;
}else if (day_of_week==5) {//F
speed = 21.10;
}else if (day_of_week==6) {//S
speed = 20.75;
}
break;
case 13: // 13:00 Pm
if (day_of_week==0) { //S
speed = 22.5; //here
}else if (day_of_week==1) {//M
speed = 21.5;
}else if (day_of_week==2) {//T
speed = 21.45;
}else if (day_of_week==3) {//W
speed = 20.95;
}else if (day_of_week==4) {//T
speed = 21;
}else if (day_of_week==5) {//F
speed = 20.8;
}else if (day_of_week==6) {//S
speed = 20.9;
}
break;
case 14: // 14:00 Pm
if (day_of_week==0) { //S
speed = 22.4; //here
}else if (day_of_week==1) {//M
speed = 21.10;
}else if (day_of_week==2) {//T
speed = 20.5;
}else if (day_of_week==3) {//W
speed = 20.90;
}else if (day_of_week==4) {//T
speed = 20.25;
}else if (day_of_week==5) {//F
speed = 20;
}else if (day_of_week==6) {//S
speed = 20.25;
}
break;
case 15: // 15:00 Pm
if (day_of_week==0) { //S
speed = 22.75; //here
}else if (day_of_week==1) {//M
speed = 21;
}else if (day_of_week==2) {//T
speed = 20;
}else if (day_of_week==3) {//W
speed = 20.75;
}else if (day_of_week==4) {//T
speed = 20.10;
}else if (day_of_week==5) {//F
speed = 19.3;
}else if (day_of_week==6) {//S
speed = 20.95;
}
break;
case 16:
if (day_of_week==0) { //S
speed = 23; //here
}else if (day_of_week==1) {//M
speed = 20.60;
}else if (day_of_week==2) {//T
speed = 20;
}else if (day_of_week==3) {//W
speed = 20;
}else if (day_of_week==4) {//T
speed = 20.15;
}else if (day_of_week==5) {//F
speed = 19.75;
}else if (day_of_week==6) {//S
speed = 22;
}
break;
case 17:
if (day_of_week==0) { //S
speed = 23.90; //here
}else if (day_of_week==1) {//M
speed = 22;
}else if (day_of_week==2) {//T
speed = 20.5;
}else if (day_of_week==3) {//W
speed = 20.5;
}else if (day_of_week==4) {//T
speed = 20.5;
}else if (day_of_week==5) {//F
speed = 21.25;
}else if (day_of_week==6) {//S
speed = 22.10;
}
break;
case 18:
if (day_of_week==0) { //S
speed = 23.75; //here
}else if (day_of_week==1) {//M
speed = 22.5;
}else if (day_of_week==2) {//T
speed = 22;
}else if (day_of_week==3) {//W
speed = 22;
}else if (day_of_week==4) {//T
speed = 22;
}else if (day_of_week==5) {//F
speed = 21.75;
}else if (day_of_week==6) {//S
speed = 23;
}
break;
case 19:
if (day_of_week==0) { //S
speed = 24.4; //here
}else if (day_of_week==1) {//M
speed = 24;
}else if (day_of_week==2) {//T
speed = 23.75;
}else if (day_of_week==3) {//W
speed = 23.5;
}else if (day_of_week==4) {//T
speed = 23;
}else if (day_of_week==5) {//F
speed = 22.25;
}else if (day_of_week==6) {//S
speed = 23.10;
}
break;
case 20:
if (day_of_week==0) { //S
speed = 25; //here
}else if (day_of_week==1) {//M
speed = 24.5;
}else if (day_of_week==2) {//T
speed = 24.25;
}else if (day_of_week==3) {//W
speed = 24.25;
}else if (day_of_week==4) {//T
speed = 24;
}else if (day_of_week==5) {//F
speed = 23.6;
}else if (day_of_week==6) {//S
speed = 24.0;
}
break;
case 21:
if (day_of_week==0) { //S
speed = 25; //here
}else if (day_of_week==1) {//M
speed = 25;
}else if (day_of_week==2) {//T
speed = 24.5;
}else if (day_of_week==3) {//W
speed = 24.5;
}else if (day_of_week==4) {//T
speed = 24.25;
}else if (day_of_week==5) {//F
speed = 24.25;
}else if (day_of_week==6) {//S
speed = 24.20;
}
break;
case 22:
if (day_of_week==0) { //S
speed = 25.75; //here
}else if (day_of_week==1) {//M
speed = 26;
}else if (day_of_week==2) {//T
speed = 25.80;
}else if (day_of_week==3) {//W
speed = 25.20;
}else if (day_of_week==4) {//T
speed = 24.5;
}else if (day_of_week==5) {//F
speed = 24.5;
}else if (day_of_week==6) {//S
speed = 24.5;
}
break;
case 23:
if (day_of_week==0) { //S
speed = 26.5; //here
}else if (day_of_week==1) {//M
speed = 26.40;
}else if (day_of_week==2) {//T
speed = 25.75;
}else if (day_of_week==3) {//W
speed = 26;
}else if (day_of_week==4) {//T
speed = 25;
}else if (day_of_week==5) {//F
speed = 25;
}else if (day_of_week==6) {//S
speed = 24.45;
}
break;
}
return speed;}
编辑:该问题已在另一个线程中讨论过。但是,我一直在寻找一种以优化方式将 switch 和嵌套 if 语句组合在一起的方法。
最佳答案
你现在拥有的基本上是一个矩阵。
private double[][] speedMatrix = {
{24.9, 26.5, 26.25, 27, 26.25, 26.25, 26.25},
// 23 more lines like this, with values for speed
};
然后您可以将 speed
方法重构为:
public static double speed(int time_of_day, int day_of_week) {
return speedMatrix[time_of_day][day_of_week];
}
尽管此时您不再真正需要 speed
方法,而只需从 speedMatrix
读取即可。
关于java - 编写代码的良好实践包含许多选项,例如 switch 和 if 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52991058/
本文分享自华为云社区《大模型LLM之分布式训练》,作者: 码上开花_Lancer。 随着语言模型参数量和所需训练数据量的急速增长,单个机器上有限的资源已无法满足大语言模型训练的要求。需要设计分布式训
本文分享自华为云社区《五大基础算法--动态规划法》,作者: 大金(内蒙的)。 一、基本概念 动态规划法,和分治法极其相似。区别就是,在求解子问题时,会保存该子问题的解,后面的子问题求解时,可以直接拿来
pip install scp pip install pexpect 测试代码: import os import stat import paramiko # 用于调用scp命令 def s
我目前正在实现“ token ”REST 服务。 token 只是一个字符串,由一些参数构建而成,然后经过哈希处理并在一定时间后过期。 我想在我的 REST 服务中有一个可以验证 token 的端点,
打开软删除后,我在客户端上添加一条记录,推送,删除添加的记录推送,然后尝试使用与初始记录相同的主键添加新记录(然后推送),我得到一个异常(exception)。 EntityDomainManager
打开软删除后,我在客户端上添加一条记录,推送,删除添加的记录推送,然后尝试使用与初始记录相同的主键添加新记录(然后推送),我得到一个异常(exception)。 EntityDomainManager
我有一个应用程序,每 x 秒接收一次天气信息。我想将此数据保存到 XML 文件中。 我应该为每个天气通知创建一个新的 XML 文件,还是将每个通知附加到同一个 XML 文件中?我不确定 XML 标准的
我猜我们大多数人都必须在某个时候处理这个问题,所以我想我会问这个问题。 当您的 BLL 中有很多集合并且您发现自己一遍又一遍地编写相同的旧内联(匿名)谓词时,显然有必要进行封装,但实现封装的最佳方
我有一些 c# 代码已经运行了一段时间了..我不得不说,虽然我了解 OO 原则的基础知识,但显然有不止一种方法可以给猫剥皮(尽管我讨厌那个短语!)。 因此,我有一个基本抽象类作为基本数据服务类,如下所
我设计了一个 SQL 数据库系统(使用 Postgre),我有一个问题,即创建一个关系/引用的常见做法是什么,这种关系/引用即使在引用的对象被删除时也能持续存在。 比如有一个UserORM,还有Act
我们的目标是搜索用户输入的字符串并计算在其中找到多少元音。不幸的是我被困在这里,有什么帮助吗? def numVowels(s): vowels= "AEIOUaeiou" if s
我有一个适用于我的“items”int 数组的旋转函数。下面的代码完成了它,除了我不必要地传输值。我正在努力实现“就地”轮换。我的意思是 ptrs 会递增或递减,而不是从数组中获取值。我需要通过这种方
我有一个 json 存储在我的应用程序文档文件夹中,我需要在我的所有 View 中使用它。我正在加载 json 并将其添加到每个 View 中的 NSMutableArray。但现在我了解到,我可以将
我用 C++ 开始了一个项目。这种语言的内存管理对我来说是新的。 我过去常常使用 new () 创建对象,然后传递指针,虽然它可以工作,但调试起来很痛苦,人们看到代码时会用有趣的眼神看着我。我为它没有
已结束。 这个问题是 off-topic .它目前不接受答案。 想要改进这个问题? Update the question所以它是on-topic堆栈溢出。 关闭 10 年前。 Improve thi
保持类松散耦合是编写易于理解、修改和调试的代码的一个重要方面——我明白这一点。然而,作为一个新手,几乎任何时候我都会超越我所苦苦挣扎的最简单的例子。 我或多或少地了解如何将字符串、整数和简单数据类型封
我发现我需要编写大量重复代码,因为我无法从其他 Controller 调用函数。例如,这里新闻提要内容在我的代码中重复,我对一个 Controller 做一些特定的事情,然后需要像这样加载我的新闻提要
假设需要一种数字数据类型,其允许值在指定范围内。更具体地说,假设要定义一个整数类型,其最小值为0,最大值为5000。这种情况在很多情况下都会出现,例如在对数据库数据类型,XSD数据类型进行建模时。 在
假设我想循环整个数组来访问每个元素。使用 for 循环、for...in 循环或 for...of 循环是 JavaScript 开发人员的标准做法吗? 例如: var myArray = ["app
我有一个旧的 SL4/ria 应用程序,我希望用 Breeze 取代它。我有一个关于内存使用和缓存的问题。我的应用程序加载工作列表(一个典型的用户可以访问大约 1,000 个这些工作)。此外,还有很多
我是一名优秀的程序员,十分优秀!