所以,我对这段代码感到困惑:
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)
这是我的输出:
插入整数:
无效的值!
插入整数:
无效的值!
...
我正在尝试使一个小程序更强大,我需要一些帮助.
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)
2号必须大于1号
此外,我希望程序自动检查并忽略用户是否输入字符而不是数字.因为现在当用户输入例如r
而不是数字时,程序就会退出.
假设我需要继续询问用户,直到他进入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)
我错过了什么?