Java中的do-while循环的异常处理
该算法应将3个整数带入ArrayList。如果输入的不是整数,则将出现提示。当我执行代码时,该catch
子句会执行,但是程序会陷入无限循环。有人可以指导我朝正确的方向前进,我感谢您的帮助。:-D
package chapter_08;import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
public class IntegerList {
static List<Integer> numbers = new ArrayList<Integer>();
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int counter = 1;
int inputNum;
do {
System.out.print("Type " + counter + " integer: " );
try {
inputNum = input.nextInt();
numbers.add(inputNum);
counter += 1;
}
catch (Exception exc) {
System.out.println("invalid number");
}
} while (!(numbers.size() == 3));
}
}
回答:
这是因为当使用下一个int读取nextInt()
并且失败时,Scanner
仍然包含键入的内容。然后,当重新进入do-
while循环时,input.nextInt()
尝试再次使用相同的内容对其进行解析。
您需要使用以下Scanner
内容“冲洗” 内容nextLine()
:
catch (Exception exc) { input.nextLine();
System.out.println("invalid number");
}
- 您可以删除该
counter
变量,因为您没有使用它。否则,你可以更换counter += 1
的counter++
。 - 可以替换
while (!(numbers.size() == 3))
使用while (numbers.size() != 3)
,甚至更好:while (numbers.size() < 3)
。 - 捕获异常时,除非您有充分的理由这样做,否则您应尽可能具体。在您的情况下
Exception
应替换为InputMismatchException
。
以上是 Java中的do-while循环的异常处理 的全部内容, 来源链接: utcz.com/qa/411139.html