我输入退出后出现错误
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);
}
}
答案 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]