我正在尝试弄清楚如何编写此方法以避免在异常中递归调用该方法而导致堆栈堆积?
以下是我的指示的措辞:
Read a number, use an exception handler to make sure it is an int number and then add to the ArrayList object, aryList.
这是我的尝试:
public void createOriginalAryList() {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter a number: ");
try {
int number = keyboard.nextInt();
aryList.add(number);
while(keyboard.hasNextInt()) {
System.out.println("Enter a number: ");
number = keyboard.nextInt();
aryList.add(number);
}
} catch(InputMismatchException ime) {
System.out.println("Invalid number submitted! Try again.");
createOriginalAryList();
}
System.out.println(aryList);
}
非常感谢任何建议!
最佳答案
只需使用 do-while
循环即可:
Scanner keyboard = new Scanner(System.in);
boolean redo = false;
do {
System.out.println("Enter a number: ");
redo = false;
try {
int number = keyboard.nextInt();
aryList.add(number);
while(keyboard.hasNextInt()) {
System.out.println("Enter a number: ");
number = keyboard.nextInt();
aryList.add(number);
}
} catch(InputMismatchException ime) {
redo = true;
System.out.println("Invalid number submitted! Try again.");
}
}
while(redo);
System.out.println(aryList);
由于每次初始化扫描仪键盘
都没用,所以放在循环之前。
关于java - 如何避免堆栈堆积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367816/