相关疑难解决方法(0)

如何使用Scanner处理由无效输入(InputMismatchException)引起的无限循环

所以,我对这段代码感到困惑:

import java.util.InputMismatchException;
import java.util.Scanner;

public class ConsoleReader {

    Scanner reader;

    public ConsoleReader() {
        reader = new Scanner(System.in);
        //reader.useDelimiter(System.getProperty("line.separator"));
    }

    public int readInt(String msg) {
        int num = 0;
        boolean loop = true;

        while (loop) {
            try {
                System.out.println(msg);
                num = reader.nextInt();

                loop = false;
            } catch (InputMismatchException e) {
                System.out.println("Invalid value!");
            } 
        }
        return num;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

插入整数:
无效的值!
插入整数:
无效的值!
...

java infinite-loop java.util.scanner

34
推荐指数
1
解决办法
3万
查看次数

如何使用Scanner仅接受有效的int作为输入

我正在尝试使一个小程序更强大,我需要一些帮助.

Scanner kb = new Scanner(System.in);
int num1;
int num2 = 0;

System.out.print("Enter number 1: ");
num1 = kb.nextInt();

while(num2 < num1) {
    System.out.print("Enter number 2: ");
    num2 = kb.nextInt();
}
Run Code Online (Sandbox Code Playgroud)
  1. 2号必须大于1号

  2. 此外,我希望程序自动检查并忽略用户是否输入字符而不是数字.因为现在当用户输入例如r而不是数字时,程序就会退出.

java validation java.util.scanner

24
推荐指数
1
解决办法
22万
查看次数

为什么扫描程序在循环java中没有请求try-catch中的其他输入

假设我需要继续询问用户,直到他进入double.

我做的是我使用了一个while循环并检查是否有异常.

如果有异常,我会去询问下一个输入.

double bal = 0;
Scanner sc = new Scanner(System.in);
while (true) {
    try {
        System.out.println("Enter the balance");
        bal = sc.nextDouble();
        break;
        } catch (Exception e) {
          System.out.println("That isn't a number");
    }
}
System.out.println("Bal is " + bal);
sc.close();
Run Code Online (Sandbox Code Playgroud)

但是如果我输入一个非double,那么它不会要求下一个输入,继续打印以无限循环结束的那两行.

Enter the balance
XYZ
That isn't a number
Enter the balance
That isn't a number
Enter the balance
That isn't a number
Enter the balance
That isn't a number
....
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

java double exception-handling java.util.scanner

3
推荐指数
2
解决办法
162
查看次数