我现在正在为Exceptions做大学任务。我写了一些代码,但它没有用,只是想知道是否有人可以找到我出错的地方?任何帮助将不胜感激。
我已经编写了一个专门用于处理InputMismatchException的类,但是,当我在数组中输入double而不是整数时,程序仍然会崩溃而不是像我想要的那样处理异常。 / p>
感谢。
public class Lab8 {
public static void main(String[] args) {
ArrayList<Integer> a = new ArrayList<Integer>();
Scanner s = new Scanner(System.in);
boolean x = true;
while (x == true) {
try {
System.out.println("Enter the next integer: ");
/*Autoboxing takes place here. The primitive type "int" taken in from the
user is converted to an Integer object.*/
Integer i = s.nextInt();
a.add(i);
} catch (InputMismatchException e) {
System.out.println("You must enter an integer.");
}
System.out.println("Would you like to enter another integer? (Y/N): ");
char y_n = s.next().charAt(0);
if (y_n == 'Y') {
x = true;
} else {
x = false;
}
}
for (int i = 0; i < a.size(); i++) {
System.out.println(a.get(i));
}
}
}
答案 0 :(得分:0)
添加
s = new Scanner(System.in);
像这样
System.out.println("Would you like to enter another integer? (Y/N): ");
s = new Scanner(System.in);
char y_n = s.next().charAt(0);
答案 1 :(得分:0)
由于Scanner无法从输入中提取int,因此它仍然卡在那里。在寻找新的东西之前,你需要清除输入;否则next.charAt(0)
将成为双倍的第一个数字(在您的示例中)。在catch子句中,添加
s.next();