数组遍历检查错误 当每输入一个数字时,将他存储在一个数组中,检测有没有输入重复的,然后输入了以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public static void main (String args[]) { ArrayList<Integer> list = new ArrayList <>(); Scanner scanner = new Scanner (System.in); System.out.print("Enter an integer: " ); int integer = scanner.nextInt(); list.add(integer); while (true ) { System.out.print("Enter an integer: " ); integer = scanner.nextInt(); list.add(integer); for (int i = 0 ; i < list.size(); i++) { if (integer == list.get(i)) { System.out.println("You've entered " + integer); break ; } } } }
然而结果就是无论我输入一个什么样的值他都会出现提示重复,like following
1 2 3 4 5 6 7 8 9 Enter an integer: 4 Enter an integer: 5 You've entered 5 Enter an integer: 6 You've entered 6 Enter an integer: 4 You've entered 4 Enter an integer: 5 You've entered 5
然后我就不断地测试,到底哪里除了问题,又是设断点,又是加输出,搞得一团糟就像下面一样。
1 2 3 4 5 6 7 8 9 for (int i = 0 ; i < list.size(); i++) { if (integer == list.get(i)) { System.out.println("You've entered " + integer); System.out.println(integer); System.out.println(list.get(0 )); System.out.println(list.get(i)); break ; } }
结果就是什么也没有发现。 我说我要冷静,一定可以看出来的,然后突然灵光一现,太上老君终于明白了 问题就在for循环上 for 循环将所有ArrayList中的元素全部遍历了一遍,所以将刚刚加入的那个也遍历了。将其取出就好了
哈哈哈哈哈哈哈,我真是个沙雕哈哈哈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public static void main (String args[]) { ArrayList<Integer> list = new ArrayList <>(); Scanner scanner = new Scanner (System.in); System.out.print("Enter an integer: " ); int integer = scanner.nextInt(); list.add(integer); while (true ) { System.out.print("Enter an integer: " ); integer = scanner.nextInt(); list.add(integer); for (int i = 0 ; i < list.size() - 1 ; i++) { if (integer == list.get(i)) { System.out.println("You've entered " + integer); break ; } } } }
如果以上有什么错误或需要改正的地方,请联系我,非常感谢大家的帮助