我理解我的IDE告诉我的内容,我无法在交换机中使用s1
变量。我不明白为什么或如何解决它。
根据我到目前为止所提到的内容,这就是我想要做的事情:
使用特定命令打开和关闭虚构机器 接受随机字符串而不会崩溃
对代码进行修正会很好。但我真正想知道的是,我做的事情显然是愚蠢的,还是我不可能做到的?
import java.util.Scanner;
public class Switches {
public static void main(String[] args) {
int myInt = 1;
while (myInt < 20) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter a command: ");
String s1;
s1 = input.nextLine();
System.out.println(s1);
}
switch (s1) {
case "start":
System.out.println("Machine Started!");
myInt++;
break;
case "stop":
System.out.println("Machine Stopped!");
myInt++;
break;
default:
System.out.println("Command not recognised!");
}
while (myInt > 100)
;
System.out.println("Error");
}
}
这是我修改后的代码:
import java.util.Scanner;
public class Switches {
public static void main(String[] args) {
int myInt = 1;
do {
System.out.println("Please enter a command: ");
String s1;
Scanner input = new Scanner(System.in);
s1 = input.nextLine();
switch (s1) {
case "start":
System.out.println("Machine Started!");
myInt++;
break;
case "stop":
System.out.println("Machine Stopped!");
myInt++;
break;
default:
System.out.println("Command not recognised!");
}
}
while (myInt < 100);
}
}
答案 0 :(得分:1)
在这段代码中,我看到变量myInt
永远不会改变:
while(myInt < 20){
Scanner input = new Scanner(System.in);
System.out.println("Please enter a command: ");
String s1;
s1 = input.nextLine();
System.out.println(s1);
}
你在哪里改变那个变量?因为你正在做一个无限循环,那个变量总是为1而永远不会到达开关
答案 1 :(得分:1)
你在while循环中定义s1但在循环之后进行访问,因此它不存在于循环之外。只需在while循环之前定义s1,你应该很好。像:
int myInt = 1;
String s1;
while(myInt < 20){
Scanner input = new Scanner(System.in);
System.out.println("Please enter a command: ");
s1 = input.nextLine();
System.out.println(s1);
}
答案 2 :(得分:1)
如果myInt小于100,那么最后一个while循环也是一个无限循环。在while循环之后直接分号是没有意义的。