当我进入出口后它说
我得到错误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]