Java 程序抛出ArrayIndexOutOfBoundException,如何克服?

Java 程序抛出ArrayIndexOutOfBoundException,如何克服?,java,Java,该程序工作正常,但抛出数组索引超出绑定异常,请帮助如何克服此问题?该程序工作正常,但抛出数组索引超出绑定异常,请帮助如何克服此问题 package coreJava; import java.util.Scanner; public class Practice { public static int count = 0; public static int position = 0; public static boolean flag = false;

该程序工作正常,但抛出数组索引超出绑定异常,请帮助如何克服此问题?该程序工作正常,但抛出数组索引超出绑定异常,请帮助如何克服此问题

package coreJava;

import java.util.Scanner;

public class Practice {
    public static int count = 0;
    public static int position = 0;
    public static boolean flag = false;

    public static void main(String[] args){
       // int a[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 21, 23 };

         Scanner s = new Scanner(System.in);
         System.out.print("Enter number of elements you want in array:");
         int n = s.nextInt();
         int a[] = new int[n];
         System.out.println("Enter all the elements:");

         for (int i = 0; i < n; i++) {
             a[i] = s.nextInt();
         }

         findMissingNumbers(a, position);
    }

    private static void findMissingNumbers(int a[], int position) {
        if (position == a.length - 1)
            return;

        for (; position < a[a.length - 1]; position++) {
            if ((a[position] - count) != position) {
                System.out.println("Missing Number: " + (position + count));
                flag = true;
                count++;
                break;
            }
        }

        if (flag) {
            flag = false;
            findMissingNumbers(a, position);
        }
    }
}
包coreJava;
导入java.util.Scanner;
公共课堂实践{
公共静态整数计数=0;
公共静态int位置=0;
公共静态布尔标志=false;
公共静态void main(字符串[]args){
//INTA[]={0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,18,20,21,23};
扫描仪s=新的扫描仪(System.in);
System.out.print(“在数组中输入所需的元素数:”);
int n=s.nextInt();
int a[]=新的int[n];
System.out.println(“输入所有元素:”);
对于(int i=0;i
如果((a[位置]-计数)!=位置),则行中{

您可能会遇到异常。这是因为位置可能高于a.length-1。请检查算法。因为作为输入的第一个数字可能小于其他输入值。

更改:

for (; position < a[a.length - 1]; position++)
(;位置 致:

(;位置
它什么时候抛出该错误?我看不出它抛出该错误。您能告诉我们抛出的异常是哪一行吗?
for (; position < a.length; position++)