当前位置: 首页 > 知识库问答 >
问题:

Switch语句,使默认为较早定义的开关情况?

令狐珂
2023-03-14

我想这样做:

int i = 0;

switch(difficulty) {
    case 1: i++; break;
    case 2: i--; break;
    default: case 1;
}   

这样的事情可能吗?我想防止代码重复。我知道在这个特定的示例中,没有什么理由这样做,因为重复的代码很小。我能想到的唯一一件事是这样的(使用开关盒的穿透能力):

switch(difficulty) {
    case 2: i--; break;
    default:
    case 1: i++; break;
}   

我宁愿不这样做,因为增加案例数量并在底部设置默认值会更有意义。

但我想知道,如果我这样做,它会不会搞乱引擎盖下的goto语句?特别是,由于数字或顺序错误,决定使用哪个goto语句不会花费更长的时间吗?switch语句中的顺序重要吗?假设所有的案例都有相同的被调用的几率,如果你把它们按随机顺序而不是线性顺序排列,这有关系吗?

[编辑:对于我关于效率的附带问题,我发现了这样一个问题:switch语句的顺序重要吗?简短的回答是否定的:switch case顺序会影响速度吗?Java的switch是如何工作的?

共有3个答案

谈炳
2023-03-14

据我所知,大小写的顺序不会以任何方式改变开关语句,你的参数是否适合大小写,所以在你的情况下,你先有哪种情况并不重要。如果你愿意,你可以把留档作为参考。https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

孙元明
2023-03-14

这可能是您需要/想要的,并且是有效的代码

int i = 0;      
    switch (difficulty) {
    default:
    case 1: i++; break;
    case 2: i--; break;
    }
王涵育
2023-03-14

这应该适合您的需要:

switch(difficulty) {
    case 2: i--; break;
    default: i++; break;
}
 类似资料:
  • 所以基本上我有一个学校的项目,它包含一个time循环中的开关语句。 假设我输入“1”,它在大小写“1”中运行代码。然后它应该在之后中断。但默认代码也总是运行。 这是案例“1”代码: 这是默认代码: 以下是输出: 我很有信心我的代码是正确的,但是如果我缺少什么,请告诉我如何修复它,谢谢。

  • 所以基本上我有一个学校项目,它在while循环中包含一个switch语句。 假设我输入“1”,它运行案例“1”中的代码。然后它会在之后破裂。但默认代码也总是可以运行。 以下是案例“1”代码: 这是默认代码: 以下是输出: 我很有信心我的代码是正确的,但是如果我缺少什么,请告诉我如何修复它,谢谢。

  • 问题内容: 对于建议抛出异常的人: 抛出异常不会给我编译时错误,而是给我运行时错误。我知道我会抛出异常,我宁愿在编译时死掉,也不愿在运行时死掉。 首先,我正在使用Eclipse 3.4。 我有一个数据模型,它的mode属性是Enum。 我目前正在编写此模型的视图,并且我有代码 我收到一个错误“此方法必须返回类型为java.awt.Color的结果”,因为我没有默认大小写,并且在函数末尾没有返回xx

  • 我正在制作一个21点游戏,可以用javascript帮助计算牌数。其中一个功能是更新计数。为了做到这一点,我放了一个switch语句,如果卡片是2到6,那么计数将递增1,如果卡片是杰克、国王、王后或王牌,那么计数将递减1。我已经检查了我的代码多次,无法找出错误所在。无论变量或等于什么,它将始终默认为switch语句中的第一种情况。我甚至尝试设置,但它仍然默认为第一种情况。有人能找出问题所在吗?谢谢

  • 问题内容: 只是想弄清楚如何对Java switch语句使用多种情况。这是我要执行的操作的一个示例: 与必须要做的事情: 有什么想法,如果可能的话,或者什么是好的选择? 问题答案: 可悲的是,这在Java中是不可能的。您将不得不使用using 语句。

  • switch 语句可以替代多个 if 判断。 switch 语句为多分支选择的情况提供了一个更具描述性的方式。 语法 switch 语句有至少一个 case 代码块和一个可选的 default 代码块。 就像这样: switch(x) { case 'value1': // if (x === 'value1') ... [break] case 'value2':