Java 数组索引超出范围异常:2

Java 数组索引超出范围异常:2,java,exception,multidimensional-array,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);

当我进入出口时,会出现错误

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);

        }
}
import java.util.*;
公共级公路{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“出口总数”);
int p=input.nextInt();
System.out.println(“第一个出口”);
int i=input.nextInt();
System.out.println(“第二个出口”);
int j=input.nextInt();
int[]A=新的int[p];
用于(int w=0;wi){
对于(int k=i;kj){

对于(int m=j;m您的循环将迭代直到
p
包含在内,这就是您得到错误的地方! 数组的大小是
p
,您应该迭代的索引是0,…,p-1加上您正在增加
i
,而不是
w

修改:

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

for(int w=0;w将for循环更改为以下内容

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


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

for(int w=0;ww这是堆栈跟踪?另外,您是否尝试过单步遍历代码以查看哪一行引发异常?@alfasin在该答案中
w
没有增加。此外,用户正在更新
A[i]
然后打印
A[w]
这将再次向他显示类似的错误。@阿尔法辛希望这也能为其他人澄清:)
for(int w=0;w<p;w++) {


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