我是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
命令。
答案 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;
}
}