数组中缺少整数的java嵌套循环
我是初学者。我在运行这一系列for循环以查找数组中缺少哪些整数时遇到问题
public class FunWithArrays{
public static void main(String[] args){
String nString = args[0];
int n = Integer.parseInt(nString);
int inputArray [] = {1,2,4};
System.out.println(" The missing numbers are " );
findMissingNum(n, inputArray);
}
public static void findMissingNum(int n, int[] inputArray){
for (int i = 1; i <= inputArray.length; i++){
int count = 0;
for( int j = 0; j < n; j++){
if(inputArray[j] == i){
count ++;
}
if (count == 0){
System.out.println(i);
}
}
}
}
}
我得到了我想要的答案,即3,但它不打印,而是显示在运行时错误中:
java.lang.ArrayIndexOutOfBoundsException: 3
at FunWithArrays.findMissingNum(FunWithArrays.java:17)
at FunWithArrays.main(FunWithArrays.java:9)
该方法应将用户输入的n(当程序运行时)作为数组的最大值,并打印所有缺少的值 逻辑是外部for循环应该遍历数字1-n的数组,而内部循环应该在每次找到某个数字时添加到count变量。在迭代结束时,它应该打印最终“计数”为0的任何数字。这简直快把我逼疯了!!!提前感谢:)
# 1 楼答案
首先,您应该从0遍历到(inputArray.length-1)inputArray索引。这将消除ArrayIndexOutOfBoundsException,因为java数组索引从0开始,而不是从1开始
对于内环,从0运行到n,因为n是最大数
第三,它应该是输入阵列[i]==j,而不是输入阵列[j]==i,与打印值相同。在你的情况下,我相信你有=4,因此它试图通过inputArray[j]调用访问inputArray[3]。这就是为什么会出现这种越界错误
# 2 楼答案
增加到
<= ipnutArray.length
的i
不会导致错误,因为i
从未用作索引。导致错误的原因是n
>;长度另外,您不应该从头开始检查
n
元素,因为n
是最大值,而不是元素数# 3 楼答案
我认为您的代码的意思是:嵌套循环总是在运行外部循环之前先运行内部循环
我将只使用while循环: