use*_*240 3 java exception-handling exception do-while java.util.scanner
我正在尝试设置一个do-while循环,它会重新提示用户输入,直到他们输入一个大于零的整数.我不能使用try-catch; 这是不允许的.这是我得到的:
Scanner scnr = new Scanner(System.in);
int num;
do{
System.out.println("Enter a number (int): ");
num = scnr.nextInt();
} while(num<0 || !scnr.hasNextLine());
Run Code Online (Sandbox Code Playgroud)
如果输入负数,它将循环,但如果是字母,则程序终止.
您可以将其作为字符串,然后使用正则表达式来测试字符串是否只包含数字.因此,num
如果它实际上是整数,则只分配字符串的整数值.这意味着你需要初始化num
为-1
,如果它不是一个整数,while条件将为true,它将重新开始.
Scanner scnr = new Scanner(System.in);
int num = -1;
String s;
do {
System.out.println("Enter a number (int): ");
s = scnr.next().trim(); // trim so that numbers with whitespace are valid
if (s.matches("\\d+")) { // if the string contains only numbers 0-9
num = Integer.parseInt(s);
}
} while(num < 0 || !scnr.hasNextLine());
Run Code Online (Sandbox Code Playgroud)
样品运行:
Enter a number (int):
-5
Enter a number (int):
fdshgdf
Enter a number (int):
5.5
Enter a number (int):
5
Run Code Online (Sandbox Code Playgroud)