import java.util.InputMismatchException;import java.util.Scanner; public class hi{ public static void main(String[] args) { // TODO Auto-generated method stub input(3); } public static int[] input(int length) { Scanner scanner = new Scanner(System.in); int[] array = new int[length]; int in = 0; for (int i = 0; i < length; i++) { System.out.print((i + 1) + ">"); try { in = scanner.nextInt(); } catch (InputMismatchException e) { i--; System.out.println("只能输入整数!"); //上次输错的那个数据还在缓冲流中。定义一个字符串变量把它读走就完了。 String clear=scanner.next(); continue; } array[i] = in; } return array; } }
【解释】1、你的死循环 每次catch发现错误后。i--确实没有问题,从截图可以看出你的i确实没有动。 但是还是继续提示”数据不是合法整数“。这是上一次输入错误的那个还留在输入管道中没有取走。所以会一致死循环错下去。应为你的i原定不动了。 2、解决办法 catch里,我们定义一个Sting类型的变量,把输入错误的那个数读出来。考虑输入的都可以看成字符串,所以就用String类型了。
时间: 2024-11-05 20:27:38