class Main {
public static void main(String[] args)
{
System.out.println("value =" + switchIt(4));
}
public static int switchIt(int x)
{
int j = 1;
switch (x)
{
case 1: j++;
case 2: j++;
case 3: j++;
case 4: j++;
case 5: j++;
default: j++;
}
return j + x;
}
}
Output = 8
我希望输出为6。 我认为switchIt()函数中的静态返回类型正在发生某些事情。 我不明白怎么办?
预先感谢
答案 0 :(得分:1)
案例中没有break
,因此执行将失败。让我们跟踪执行情况:
j
从1开始。由于x
是4
,所以我们跳到case 4:
,执行j++
-j
现在是{{ 1}}。然后,它进入2
,执行case 5:
,而j++
现在是j
。同样,它进入3
,执行另一个case default
,并将j++
带到j
。最后,我们返回4
或x+j
的{{1}}。
答案 1 :(得分:1)
4+4
的工作原理
8
,它对应于赋予Switch/case
的值case
在您之中:
switch
=> break
变成case 4
,j
=> 2
变成case 5
,j
=> 3
变成default
j
,即4
您期望的return 4+4
将由
8
答案 2 :(得分:1)
如@YCF_L所述,您缺少break;
关键字。
如果您不间断地构建开关柜,则意味着以下所有情况也将执行。交换条件基本上执行匹配的条件,然后继续进行直到找到break语句。
要更正它,您的开关应如下所示:
class Main {
public static void main(String[] args)
{
System.out.println("value =" + switchIt(4));
}
public static int switchIt(int x)
{
int j = 1;
switch (x)
{
case 1:
j++;
break;
case 2:
j++;
break;
case 3:
j++;
break;
case 4:
j++;
break;
case 5:
j++;
break;
default:
j++;
break;
}
return j + x;
}
}
答案 3 :(得分:0)
您需要添加中断;声明。 break语句在交换机内部用于终止可选的语句序列。如下更改代码:
class Main {
public static void main(String[] args)
{
System.out.println("value =" + switchIt(4));
}
public static int switchIt(int x)
{
int j = 1;
switch (x)
{
case 1: j++;break;
case 2: j++;break;
case 3: j++;break;
case 4: j++;break;
case 5: j++;break;
default: j++;
}
return j + x;
}
}