为啥我在 switch for java 中使用了“default”这个词? [复制]
Posted
技术标签:
【中文标题】为啥我在 switch for java 中使用了“default”这个词? [复制]【英文标题】:Why did I use word 'default' in switch for java? [duplicate]为什么我在 switch for java 中使用了“default”这个词? [复制] 【发布时间】:2019-11-21 01:44:13 【问题描述】:我正在学习 switch 语句。 我写了一些这样的代码:
String computerMove;
switch ( (int)(3*Math.random()) )
case 0:
computerMove = "Rock";
break;
case 1:
computerMove = "Paper";
break;
case 2:
computerMove = "Scissors";
break;
System.out.println("The computer`s move is " + computerMove);
我在编译代码后被要求添加“case”或“default”或“”。 我尝试将代码“case 2:”更改为“default:”,它成功了。我不明白为什么它有效?我的代码似乎包含了所有可能的值。
【问题讨论】:
default
表示没有匹配大小写时使用的大小写,即不是 0,1 或 2
所有可能的值都基于您的logic
,但不基于变量类型。
这里有一个使用开关***.com/questions/4649423/…的例子
【参考方案1】:
当您使用带有 int 的 switch 时,编译器只会检查所有 case
选项是否都是 int
并且是唯一的,但它不会检查此 int 的可能范围。您甚至可以添加case 532:
,它仍然可以工作,因为编译器只是验证您的案例有int
类型
【讨论】:
你的意思是编译器只是检查所有 case 选项的类型而没有实际值吗?总是使用“默认”会更好吗? 也许吧。我会将您明确的 0、1、2 案例保留为明确编码。我可能会考虑添加一个“默认值:”,它以某种方式报告发生了意外情况(在您的情况下,表达式小于 0 或大于 2)。它“不应该发生”,但是当它发生时(ok:'if')快速检测它是有用的。在您的简单示例中,这有点矫枉过正,但在更复杂的程序中,它可能很有价值。 @KMING 是的,这就是我的意思,是的,最好始终使用默认值,即使它应该永远不会发生,您可以使用 System.out.println("这本不应该发生")以上是关于为啥我在 switch for java 中使用了“default”这个词? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 java 中得到 Undefinedlabel 错误?
为啥这个 switch 语句在运行时会结束 while 循环?
为啥“defau4t”在 switch 语句中是合法的? [复制]