Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我对switch语句的理解有什么问题?_Java - Fatal编程技术网

Java 我对switch语句的理解有什么问题?

Java 我对switch语句的理解有什么问题?,java,Java,从逻辑上讲,我认为答案应该是0。打印输出是2 public class Switch{ public static void main(String[] args){ int x = 3; int y = 4; switch (x + 3) { case 6: y = 0; case 7: y = 1; default: y += 1; } System.out.print(y); } } 我认为代码应该这样运行: 1加上x+3。答案是6 2案例6与答案

从逻辑上讲,我认为答案应该是0。打印输出是2

public class Switch{
public static void main(String[] args){

int x = 3; int y = 4;

  switch (x + 3) {
    case 6: y = 0;
    case 7: y = 1; 
    default: y += 1;
   }
System.out.print(y);
}
}
我认为代码应该这样运行:

1加上x+3。答案是6

2案例6与答案6相关。这将导致0成为6的新值

3我们忽略案例7和默认情况,因为案例6符合需要

4系统输出y的新值,即0


这就是我错的地方,因为2是打印出来的。我的想法哪里错了,我对switch语句的理解中遗漏了什么?

一旦选择了switch语句中的一个Case,代码执行就直接从那里开始,这意味着它正在执行所有的Case。如果您不想这样,请使用Break语句:

switch (x + 3) {
    case 6: y = 0; break;
    case 7: y = 1; break;
    default: y += 1; break;
   }

一旦选择了Switch语句中的一个Case,代码执行就直接从那里开始,这意味着它正在执行所有的Case。如果您不想这样,请使用Break语句:

switch (x + 3) {
    case 6: y = 0; break;
    case 7: y = 1; break;
    default: y += 1; break;
   }
在一个开关中,从匹配的一个开始,您就从箱子中跌落。在这里,输入case 6,然后输入case 7,然后输入default。使用break关键字可以防止此行为:

在一个开关中,从匹配的一个开始,您就从箱子中跌落。在这里,输入case 6,然后输入case 7,然后输入default。使用break关键字可以防止此行为:


您错过了break语句。如果您传递了-Xlint选项,javac将警告您这些错误。因为您没有任何break;,您将访问每个案例。在第一种情况下,y是0,然后是1,然后是2,这是返回值。通常IDE也会对缺少的break语句生成警告。如果传递-Xlint选项,则缺少break语句。javac将警告您这些错误。因为您没有任何break;,您将访问每个案例。在第一种情况下,y是0,然后是1,然后是2,这是返回值。通常IDE还可以为缺少break语句生成警告。没有必要为默认情况添加break。好的,我现在明白了。谢谢。@Christopherbayans如果您对答案感到满意,请将其标记为已接受。这将使导航员满意地回答这个问题。没有必要为默认情况添加中断。好的,我现在明白了。谢谢。@Christopherbayans如果您对答案感到满意,请将其标记为已接受。这将使领航员确信这个问题已得到令人满意的回答。