java - 嵌套 for 循环数组中缺少整数

标签 java arrays for-loop nested

这里是初学者。我在运行这一系列 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 的 (inputArray.length-1) 索引。这将消除 ArrayIndexOutOfBoundsException,因为 java 数组索引从 0 而不是 1 开始。

  2. 对于内部循环,从0 运行到n,因为n 是最大数字。

  3. 第三,它应该是 inputArray[i] == j,而不是 inputArray[j] == i,与打印值相同。在你的情况下,我相信你有n>=4,所以它试图通过inputArray[j]调用访问inputArray[3]。这就是为什么您会收到此越界错误。

关于java - 嵌套 for 循环数组中缺少整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44123545/

相关文章:

java - 为什么 `.read()` 一个数字的方法返回不同的数字

android 我如何在 POST 请求中发送带有 1key 的数组

C - 下标值既不是数组也不是指针也不是 vector

linux - 如何在 bash for 循环中使用变量

python - 比循环查找数据更快或更好的方法?

java - 如何更改Android中的任务关联性?

java - 为什么 ExceptionHandlerExceptionResolver 会进行重定向而不是简单的响应?

java - javax.xml.namespace 包可从多个模块访问

python - 打印嵌套数组的更好方法

java - 我找不到 "java.lang.StringIndexOutOfBoundsException"错误的原因