java - 测试输入是否为整数时如何避免无限循环

标签 java input

我试图只允许整数输入并阻止我的程序在输入其他内容时中断。不知何故,我的代码创建了一个无限循环,并且不允许我输入新的输入。

    private static int x;

    public static void main(String[] args) {
        testInput();
    }

    public static void testInput(){
        while (true){
            System.out.println("Please enter Integer:");
            try{
                setX(scanner.nextInt());
                break;
            }catch (InputMismatchException i){
                System.out.println("Please use Integer");
            }
        }
    }

    public static void setX(int integer){
        x = integer;
    }
}

创建无限循环,其中显示:请输入整数:,请使用整数而不是让我进行新输入。

最佳答案

你走在正确的轨道上,有一个 while 循环,基本上,你只需要使用 Scanner.<b>next()</b> 当用户输入整数以外的内容时:

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String prompt = "Please enter an integer: ";
        int userInteger = getIntegerInput(prompt, scanner);
        System.out.printf("You entered: %d%n", userInteger);
    }

    private static int getIntegerInput(String prompt, Scanner scanner) {
        System.out.print(prompt);
        int validInteger = -1;
        while (scanner.hasNext()) {
            if (scanner.hasNextInt()) {
                validInteger = scanner.nextInt();
                break;
            } else {
                System.out.println("Error: Invalid input, try again...");
                System.out.print(prompt);
                scanner.next();
            }
        }
        return validInteger;
    }
}

用法示例:

Please enter an integer: a
Error: Invalid input, try again...
Please enter an integer: 😀
Error: Invalid input, try again...
Please enter an integer: 1.0
Error: Invalid input, try again...
Please enter an integer: 6
You entered: 6

关于java - 测试输入是否为整数时如何避免无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56687821/

相关文章:

java - 从其他 Bufferedimage 加载 Bufferedimage

java - 如何将图像保存到数据库(Java 与 SQL)

窗口内的C++输入框

javascript - 赋值时是否可以防止输入中的插入符号跳到末尾?

C++ CMD 输入和 exe

php - 引导输入值仅显示第一个单词

java - 我有一个 ListView 。如何将 ListView 的点击总数保存到另一个 Activity TextView ?

Java 从命名空间中排除基目录

java - 对java中对象的双重引用

php - &lt;input&gt; 添加了 padding-left 是一个太大的超链接