如何正确循环开关?

时间:2016-01-13 06:18:53

标签: java

我是Java的初学者,我想进入它,我喜欢玩它。所以我开始做在线课程。

因此,在几个视频之后,我学习了一些关于switch语句的知识,并想知道如何有效地循环它们。

package v1;

import java.util.Scanner;

public class Computer {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("Computer is booting up...");
        System.out.println("Welcome to Mindows '93, please enter a command.");

        String command = input.nextLine();
        boolean computerON = true;

        while (computerON) {

            switch (command) {
            case "!music":
                System.out.println("Playing music!");
                break;
            case "!browse":
                System.out.println("Launching browser...");
                break;
            case "!help":
                System.out.println("Here are the commands that can be used !music, !browse, !shutdown");
                break;
            case "!shutdown":
                System.out.println("Shutting down Mindows, goodbye!");
                break;
            default:
                System.out.println("Command not recognised, type !help for a list of commands...");
                break;
            }
            if (command.equals("!shutdown")) {
                computerON = false;
            }
        }
    }
}

基本上我想要的是制作一个名为Mindows的基于模拟文本的操作系统,其功能非常有限,但我遇到了问题。

当我输入!music时,该程序会不断发出“播放音乐!”字样的垃圾邮件。

但是,当我输入!shutdown时,它会终止,这就是我想要的。

我想要的是键入!music,!browse,!help和(x)以获取没有程序垃圾邮件行或终止的默认邮件。

我希望能够不断地输入这些命令,直到发出!shutdown命令。

3 个答案:

答案 0 :(得分:4)

您只能在循环中读取命令一次。

尝试移动线:

String command = input.nextLine();

进入 while循环。

答案 1 :(得分:3)

您将进入无限循环,因为您在循环之前接受来自用户的输入,并且在循环执行期间输入不会更改。因此,如果您输入“!music”,则命令不会在整个循环中发生变化,并且let roundedTenths = Int(round(timeInterval*10)) let roundedElapsedTenths = Int(round(actualElapsedTime * 10)) if roundedElapsedTenths % roundedTenths == 0 { print("is a multiple of 0.4") } 语句在循环的每次迭代中始终进入switch,这就是为什么case "!music":是始终为真,循环执行并无限打印“播放音乐”。

解决这个问题的方法是将computerON语句移到while循环中,就像上面的答案所说的那样。

答案 2 :(得分:0)

在此处更改了您的逻辑:

    boolean computerON = true;
    while (computerON) {
       String command = input.nextLine();

        switch (command) {
        case "!music":
            System.out.println("Playing music!"); break;

        case "!browse":
            System.out.println("Launching browser...");
            break;

        case "!help":
            System.out.println("Here are the commands that can be used !music, !browse, !shutdown");
            break;

        case "!shutdown":
            System.out.println("Shutting down Mindows, goodbye!");
            break;

        default:
            System.out.println("Command not recognised, type !help for a list of commands...");
            break;
        }
        if (command.equals("!shutdown")){
            computerON = false;
        }

    }