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 += 1counter++
  • 可以替换while (!(numbers.size() == 3))使用while (numbers.size() != 3),甚至更好:while (numbers.size() < 3)
  • 捕获异常时,除非您有充分的理由这样做,否则您应尽可能具体。在您的情况下Exception应替换为InputMismatchException

以上是 Java中的do-while循环的异常处理 的全部内容, 来源链接: utcz.com/qa/411139.html

回到顶部