Java:切换语句重复/默认奇怪行为

时间:2015-09-28 00:02:30

标签: java

这是学校作业的一部分,所以我知道一些代码有点复杂,但这都是必需的。我的Switch语句有一个奇怪的问题,其他一切都正常,但我并不担心其余的代码。

如果我选择耳机1并输入音量1,它将按预期工作。如果我选择耳机1并输入音量2,它会询问问题两次然后工作。如果我选择耳机1并输入音量3,它会重复三次。如果我选择耳机2并输入音量1,它会问我两次然后转到默认情况。其余的奇怪行为也在继续。

我猜这是显而易见的,我错过了,但我现在已经进行了一段时间的故障排除,无法弄清楚发生了什么。我很感激任何指导或代码更正。谢谢!

alter user [<username from above>] with login = [<new user name>]

2 个答案:

答案 0 :(得分:2)

您的break位置不正确。

您的break应始终位于case

的最后

以下是您的代码的更正部分:

switch(hpSelect){
        case 1:
            System.out.print(volMessage);
            int volSelect = input.nextInt();
            if (volSelect == 1){
                h1.changeVolume(LOW);
                System.out.println("\n" + h1);   
            }; break;    

        case 2:
            System.out.print(volMessage);
            volSelect = input.nextInt();
            if (volSelect == 2){
                h1.changeVolume(MEDIUM);
                System.out.println("\n" + h2);
            }; break;

        case 3:
            System.out.print(volMessage);
            volSelect = input.nextInt();
            if (volSelect == 3){
                h1.changeVolume(HIGH);
                System.out.println("\n" + h3);
            }; break;

        default:
            System.out.println("Invalid entry.");
            break;



   }//End switch statement

以下是输出

的示例
Which headphone set would you like to change the volume of? 1, 2, or 3? 1
What volume would you like to set? 1 for LOW, 2 for MEDIUM, or 3 for HIGH. 1

Volume: 1
Plugged In: true
Manufacturer: Logitech
Color: Black

答案 1 :(得分:0)

哎呀,你的休息时间在if循环中。

对于所有这些,您应该在if语句之后移动中断。所以这就是它如何寻找案例3:

    case 3:
        System.out.print(volMessage);
        volSelect = input.nextInt();
        if (volSelect == 3){
            h1.changeVolume(HIGH);
            System.out.println("\n" + h3);

        }
    break;

在默认情况下执行此操作,案例1和案例2后,您将全部设置。