如果我运行此代码
Scanner sc = new Scanner();
while (true) {
if (sc.next().equals("1"))
System.out.println("--1--");
else if (sc.next().equals("2"))
System.out.println("--2--");
else if (sc.next().equals("3"))
System.out.println("--3--");
else if (sc.next().equals("4"))
System.out.println("--4--");
else if (sc.next().equals("help"))
System.out.println("--help--");
}
我第一次输入时不会读取。我必须在读取输入之前输入2-4次。会话可能如下所示:
1
1
1
1
--1--
3
3
--3--
help
2
1
help
--help--
无论我键入什么,它只会读取四个输入的最后一个输入。 有时它会在两次输入后读取。我真的很困惑。 我应该使用多个扫描仪吗?
答案 0 :(得分:3)
你的概念在这里是错误的。
每当你要求sc.next()
时,它都会等待输入。如果该输入等于您想要的输入,则执行代码。
您可以通过将sc.next()
存储在String变量中,然后进行比较来解决此问题。
下面:
if (sc.next().equals("1"))
它要求输入。
如果输入为1
,则执行代码并打印出--1--
。否则,它会跳到这个:if (sc.next().equals("2"))
。现在,如果输入为2
,则执行打印--2--
的代码。否则,它会跳转到if (sc.next().equals("3"))
,依此类推。
您可以通过以下方式更正此问题:
sc.next()
存储在String变量中,然后进行比较。答案 1 :(得分:1)
你多次调用 <select name="tamano" ng-model="pizza.initial_prize" class="form-control select">
<option ng-value="0">Seleccionar tamaño</option>
<option ng-value="pizza.fam">Familiar</option>
<option ng-value="pizza.med">Mediana</option>
<option ng-value="pizza.peq">Pequeña</option>
</select>
- 所以如果输入不是1,它将等待更多输入以查看 next 输入是否为2,等等。致电sc.next()
将等待更多输入。它不知道“这不是你要找的输入,所以下次你打电话时我会返回相同的值。”
使用局部变量存储sc.next()
sc.next()
另外考虑使用switch语句......
答案 2 :(得分:0)
您多次调用sc.next()
解决方案代码:
Scanner scanner = new Scanner(System.in);
while(true){
switch (scanner.next()) {
case "1":
System.out.println("--1--");
break;
case "2":
System.out.println("--2--");
break;
case "3":
System.out.println("--3--");
break;
case "4":
System.out.println("--4--");
break;
case "help":
System.out.println("--help--");
break;
default:
break;
}
}