数组索引越界异常:2



当我进入出口后它说

我得到错误
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);
        }
}

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

修改:

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

:

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

将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]

相关内容

  • 没有找到相关文章

最新更新