Java while循环如果出错一次就继续执行catch块中的代码
Java while loop continuously executing the code in catch block if error generated once
我想打印一个数字的乘法 table。所以我做了一个 while(true) 块来不断地从用户那里获取输入。我还制作了一个 try and catch 块,这样我就可以处理异常。
下面是我的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Getting the multiplication table of any number");
while (true) {
try {
System.out.println();
System.out.print("Enter a number: ");
long number = scanner.nextLong();
for (byte num = 1; num < 11; num++) {
System.out.println(number + "X" + num + " = " + (number * num));
}
System.out.println();
System.out.println();
} catch (Exception e) {
System.out.println("Please enter a valid input.");
}
}
}
}
当我 运行 程序时,它 运行 没问题,直到我只引入一个错误。然后它只给出输出:
Enter a number: Please enter a valid input.
两个语句都在同一行,并且只是连续打印该行,没有任何延迟,也没有让我给它输入。
为什么会发生这种情况,我该如何纠正?
您可以将 catch 块更改为:
catch (Exception e) {
System.out.println("Please enter a valid input.");
scanner.next();
}
我想打印一个数字的乘法 table。所以我做了一个 while(true) 块来不断地从用户那里获取输入。我还制作了一个 try and catch 块,这样我就可以处理异常。
下面是我的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Getting the multiplication table of any number");
while (true) {
try {
System.out.println();
System.out.print("Enter a number: ");
long number = scanner.nextLong();
for (byte num = 1; num < 11; num++) {
System.out.println(number + "X" + num + " = " + (number * num));
}
System.out.println();
System.out.println();
} catch (Exception e) {
System.out.println("Please enter a valid input.");
}
}
}
}
当我 运行 程序时,它 运行 没问题,直到我只引入一个错误。然后它只给出输出:
Enter a number: Please enter a valid input.
两个语句都在同一行,并且只是连续打印该行,没有任何延迟,也没有让我给它输入。
为什么会发生这种情况,我该如何纠正?
您可以将 catch 块更改为:
catch (Exception e) {
System.out.println("Please enter a valid input.");
scanner.next();
}