java - 用户输入字符串而不是整数

标签 java string while-loop integer inputmismatchexception

我是java初学者,我编写了一个代码,用户输入一个数字,但如果他写一个字符串而不是整数,这是一个错误,我如何控制错误以向用户显示消息?错误如下:

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 Main.main(Main.java:21)

Process finished with exit code 1

这是我的代码:

import java.util.Scanner;
import java.util.ArrayList;

public class Main extends MyZoo {

    public static void main(String[] args) {

        System.out.println("1.View all available zoo animals");

        Scanner input = new Scanner(System.in);
        System.out.print("Write Here: ");
        int UserInput = input.nextInt();

        while (true) {

            try
            {
                return input.nextInt();
            }
            catch (InputMismatchException e)
            {
                input.next();
                System.out.print("That’s not an integer. Try again: ");
            }
       }
    }
}

最佳答案

您的 try catch 看起来不错,但您应该将第一个 int UserInput = input.nextLine() 放在 try 中 当然。

也许你想要这样的东西:

System.out.println("1.View all available zoo animals");

Scanner input = new Scanner(System.in);
while (true) {

    try
    {
        System.out.print("Write Here: ");
        int UserInput = input.nextInt();
        System.out.println("Your input: " + UserInput);
    }
    catch (InputMismatchException e)
    {
        input.next();
        System.out.print("That’s not an integer. Try again: ");
    }
}

关于java - 用户输入字符串而不是整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61433579/

相关文章:

java - Android:在没有图形更改的情况下禁用复选框?

java - 当系统日期改变时如何执行一些操作?

Java 猜测数字,直到正确为止(多次尝试)

javascript - 从循环中生成多个图像

javascript - JavaScript 中的 while 循环永远运行

c# - Java Runtime Environment 与.NET Framework 在编译过程方面相比如何?

java - 无法解析符号 'execute' ...调用 AsyncTask

c++ - 在 C++ 中使用变量声明数组

java - 如何将arraylist转换为双引号中所有项目的字符串数组

python - 只有 while 循环的最后一次迭代保存