该算法应将3个整数带入ArrayList。如果输入的不是整数,则将出现提示。当我执行代码时,该catch子句会执行,但是程序会陷入无限循环。有人可以指导我朝正确的方向前进,我感谢您的帮助。:-D
catch
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()尝试再次使用相同的内容对其进行解析。
nextInt()
Scanner
input.nextInt()
您需要使用以下Scanner内容“冲洗” 内容nextLine():
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