【发布时间】:2020-11-06 08:38:00
【问题描述】:
我对 Java 和编程非常陌生。我正在做一个练习来打印以控制台乘法选项卡。我想检查用户选择。我一直在寻找不同的 stackoverflow 以前的帖子,这些帖子对我走得更远有很大帮助。但是,当我测试程序时,它会抛出异常:
线程“主”java.lang.NumberFormatException 中的异常:对于输入 字符串:“p”在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.lang.Integer.parseInt(Integer.java:580) 在 java.lang.Integer.parseInt(Integer.java:615) 在 TableMultiplication.main(TableMultiplication.java:18)
拜托,你能告诉我我错过了什么吗?错误消息要求我创建断点。没看懂。
提前谢谢你
import java.util.Scanner;
import java.util.InputMismatchException;
public class TableMultiplication {
public static void main(String[] args)
{
int table = -1;
boolean wrongSelection = true;
Scanner myObj = new Scanner(System.in);
System.out.println("Multiplication tab will be shown to console ");
do{
System.out.print("Enter the tab number you want, between 1 and 9 ");
while (wrongSelection) {
try {
String value = myObj.nextLine();
table = Integer.parseInt(value);
wrongSelection = false;
}
catch(InputMismatchException e){
System.out.println("Please, enter a number ");
myObj.nextLine();
}
}
} while(table < 1 || table > 9);
for(int i = 1; i < 11; i++) {
System.out.println(table + " x " + i + " = " + table * i);
}
}
}
【问题讨论】:
-
好像您输入了“p”作为输入。即使您使用了 try-catch 块,您也没有包含当输入字符串无法解析为整数时
Integer.parseInt(String s)实际抛出的异常 -NumberFormatException。因此,您不会捕获此异常。 -
Scanner#nextLine()甚至没有抛出InputMismatchException我可以看到,你为什么要在这里抓住它? -
你好@maloomeister 我输入“p”来测试我的程序。我想看看出现异常时它是如何工作的。正如我所写的,我非常初学者(两周前开始使用 Java)。令人难以置信的是人们如何拒绝初学者提出的问题。初学者的问题并不意味着以前没有做过深入的研究。
-
不用担心,但没有否决您的问题。将来,请检查参考资料,因为它们总是会为您提供最有用的信息。
-
是的。例如,我在 cmets 中提到的链接为您提供了所需的所有信息。