While 循环一直持续到触发特定用户输入

While loops continues until specific user input is triggered

提问人:Brian Miller 提问时间:7/5/2022 最后编辑:Brian Miller 更新时间:7/5/2022 访问量:71

问:

该程序将一个 String 后跟一个整数作为输入,然后使用输入输出一个句子。程序重复,直到键入字符串“quit”。问题似乎出在 nextLine() 和 nextInt() 上,但我无法理解它。我收到以下错误:

Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
    at LabProgram.main(LabProgram.java:8)


import java.util.Scanner;

public class LabProgram {
   public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
      
      String inputStr = in.nextLine();
      int inputInt = in.nextInt();
      
      while(!inputStr.equals("quit")){
       System.out.println("Eating " + inputInt + " " + inputStr + " a day keeps you happy and healthy.");
      }  
   }
}

感谢您的帮助,以下代码成功输出:

String inputStr = "";
int inputInt;

while(!inputStr.equals("quit")){
    inputStr = in.next();
    inputInt = in.nextInt();
    in.nextLine();   //this line throws an exception but
                     //program still outputs correctly

    System.out.println("Eating " + inputInt + " " + inputStr + " a day keeps you happy and healthy.");
} 
   }
} 
while循环 java.util.scanner

评论

1赞 Jim Garrison 7/5/2022
欢迎来到 Stack Overflow。对不起,这个网站不是论坛或编程教程网站。请参观,访问帮助中心并阅读如何询问以了解如何有效地使用本网站。另请阅读: 为什么“有人可以帮助我吗?”不是一个实际的问题?

答:

1赞 Japhei 7/5/2022 #1

您仅在开始时使用扫描仪,然后将值保存在变量中。因此,您只使用循环中的值。因此,您需要让用户在循环的每次迭代中输入新的输入。

移动并进入您的循环:inputStrinputInt

String inputStr = "";
int inputInt;

while(!inputStr.equals("quit")){
    inputStr = in.nextLine();
    inputInt = in.nextInt();

    System.out.println("Eating " + inputInt + " " + inputStr + " a day keeps you happy and healthy.");
} 

在addiditon中,您必须确保输入正确的输入。第一个 (=String) 可以是键盘上的任何内容。第二个输入必须是整数,因此只能使用像 这样的数字。这就是你的错误的来源。1, 2, 230, -4, ...

评论

2赞 sorifiend 7/5/2022
请注意,您将在使用 时遇到问题,请参阅此处 stackoverflow.com/questions/13102045/...基本上在使用后,您需要使用nextIntnextInt()in.nextLine();
0赞 Brian Miller 7/5/2022
明白了。当我输入字符串时,按回车键,然后输入程序输出的整数。当用户输入字符串时,我需要它输出,点击空格,然后是整数。
0赞 Brian Miller 7/5/2022
感谢所有的帮助。使用 next() 而不是 nextLine() 解决了我的输入问题。
-1赞 Midnightfury 7/5/2022 #2

您的程序只要求输入一次,因此永远不会等于退出,因为设置一次并且永远不会更改。inputStrinputStr