数组索引超出界限异常:2

时间:2015-10-05 02:26:43

标签: java exception multidimensional-array

我输入退出后出现错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

我很喜欢编程所以请耐心等待我

import java.util.*;

public class Highway{

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("Total number of the exits");
        int p=input.nextInt();
        System.out.println("The first exit");
        int i=input.nextInt();
        System.out.println("The second exit");
        int j=input.nextInt();

        int[]A= new int[p];

        for(int w=0;w<=p;i++) {


            A[i]=(int )(java.lang.Math.random() * 20 + 1);
            System.out.println(A[w]);
        }
    }

    static void Distance(int i, int j, int[] A) {
    // a is the array of distance
    // this find the  distances between i and j
        int distance = 0;

        if(j>i){
        for(int k = i; k<=j;k++) {

                distance=distance+A[k];
        }

                distance=distance-A[i];

        }

        if(i>j){
            for (int m = j; m<=i; m++){distance=distance+A[m];
            }
                distance=distance-A[j];
            }

            System.out.println("The distance of the first"+i+" and second exit"+j+" is"+distance);

        }
}

2 个答案:

答案 0 :(得分:4)

你的循环迭代到p包含,这就是你得到错误的地方! 数组的大小为p,你应该迭代的索引是0,...,p-1加上你递增i而不是w

修改:

for(int w=0;w<=p;i++)

为:

for(int w=0;w<p;w++)

答案 1 :(得分:2)

将for循环更改为以下

for(int w=0;w<p;w++) {


        A[w]=(int )(java.lang.Math.random() * 20 + 1);
        System.out.println(A[w]);
    }

我在这里做的唯一更改是for条件,因为如果数组的大小是p,则可以在0,1,...,p-1访问数组值。此外,您需要在for循环中增加w而不是i

此外,在数组中,您要更新A[i]而不是A[w]