我是Java的初学者,并试图捕获异常'InputMismatchException'。下面是我的代码,我希望它易于阅读,如果格式不正确,请提前道歉。它构建良好并执行,但如果我输入一个字符,例如'catch'不起作用,错误出现;
“线程中的异常”主“java.util.InputMismatchException”
我相信代码中的其他所有内容都可以正常运行,包括'try',除了System.out.print命令之外,我没有任何其他内容。
import java.util.*; // imports
public class w4q1
{
public static void main(String[] args)
{
Scanner user_input = new Scanner( System.in ); // declaring Scanner util
System.out.print("Please enter an integer: \n"); // Asks for input
int d = user_input.nextInt();
while (d > 0 || d < 0) // start of while loop, in the event of anything other than zero entered
{
try {
if (d < 0) // if statements
{
System.out.print("The integer " + d + " is negative\n");
break;
}
else if (d > 0)
{
System.out.print("The integer " + d + " is positive\n");
break;
}
else
{
System.out.print("You have not entered an integer\n");
break;
}
}
catch (InputMismatchException e) // Error message for letters/characters and decimals
{
System.out.print("You have entered an incorrect value, please restart the program\n");
}
}
if (d == 0)
{
System.out.print("A zero has been entered\n");
}
}
}
答案 0 :(得分:1)
如果你仍然有一个InputMismatchException
,即使你有一个try-catch块,那么异常必须来自try-catch块之外的某个地方。
查看try-catch块之外的其他内容可以抛出InputMismatchException
并在该语句周围放置try-catch块,或者扩展现有的try-catch块以包含该语句。
答案 1 :(得分:0)
如果确实没有捕获到异常,那么生成的堆栈跟踪应该显示抛出异常的实际代码行。看一下代码,我猜这是异常发生的地方:
user_input.nextInt();
我建议您查看堆栈跟踪,看看是否可以确认。
答案 2 :(得分:0)
在此代码周围放置一个try-catch块
int d = user_input.nextInt();
通过这样做,您还需要稍微更改当前代码以使其正常。祝你好运!