使用Java开关输出奇怪的输出

时间:2013-10-15 02:28:43

标签: java switch-statement

请阅读以下功能:

public static int getValue(int i) {
    int result = 0;
    switch (i) {
        case 1:
            result = result + i;
        case 2:
            result = result + i * 2;
        case 3:
            result = result + i * 3;
    }
    return result;
}

i = 2时,输出是什么?我认为它是4,但答案是10执行。为什么会这样?为什么案例3也会执行? i是2,而不是3.我正在考虑这个但我仍然不知道为什么会这样。

5 个答案:

答案 0 :(得分:11)

每个案例的switch语句都需要break;,以避免执行后面的case语句。

答案 1 :(得分:1)

使用break来避免下一个案例执行。

public static int getValue(int i) {
        int result = 0;
        switch (i) {
        case 1:
            result = result + i;
            break;
        case 2:
            result = result + i * 2;
            break;
        case 3:
            result = result + i * 3;
            break;
        }
        default:
           break;
        return result;
    }

答案 2 :(得分:1)

你忘记了` break; switch语句 完成后它应该看起来像这样:

case 1:
    //code
    break;
case 2:
    //code
    break;

包括一个defualt案件总是好的:

default:
    System.err.println("Something went terribly wrong!");

对不起,如果以前发过这个,这应该可以解决所有问题 我还有一个原因至于为什么会发生这种情况: 结果从案例1中保存,并重新使用新值。这是你的错误。

答案 3 :(得分:0)

case语句需要一个break语句来阻止它进入下一个case语句。

拥有默认案例也很好

switch (i) {
    case 1:
        result = result + i;
        break;
    case 2:
        result = result + i * 2;
        break;
    case 3:
        result = result + i * 3;
        break;
    default:
        log.error (...);

}

答案 4 :(得分:0)

使用“ break; ”来阻止代码自动进入下一个案例。

switch (choice)
{
case 0:
  //codes
  break;
case 1:
  //codes
  break;
case 2:
  //codes
  break;
case 3:
  //codes
  break;
}