我尝试做的是用随机数填充20个整数的数组,然后打印出每个整数重复的次数。我在尝试打印重复次数时遇到错误...这是我的代码:
package nivel3;
import java.util.Random;
public class exercicio3 {
public static void main(String[] args) {
int[] numeros;
int i=0;
numeros=new int[20];
Random rand=new Random();
System.out.println("FILLING ARRAY WITH 20 RANDOM INTEGERS (FROM 0-9) \n");
do {
for (i=0; i<20; i++) {
numeros[i]=rand.nextInt(10);
System.out.printf("position"+i+of numeros[20]: "+numeros[i]+"\n\n");
}
} while (i<20);
System.out.println("--------------------------------------------------------------------- \n");
System.out.println("SHOWING THE REPEATED POSITIONS (FOR EACH POSITION OF THE ARRAY)\n");
for(int j=0; j<20; j++) {
int k=0;
do {
k++;
if (numeros[j]==numeros[k])
System.out.printf("the integer in the ["+j+"] position is equal to the integer in the ["+k+"] position \n");
}while (k<20);
}
}
}
这是错误代码:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 20
at nivel3.exercicio3.main(exercicio3.java:29)
答案 0 :(得分:0)
您在k++
之前正在numeros[k]
,这在最后一次迭代中导致ArrayIndexOutOfBoundsException
。将k++
移到循环的末尾而不是开头。
答案 1 :(得分:0)
我在这里看到两个问题。
第一个是对我没有意义。
do {
for (i=0; i<20; i++) {
numeros[i]=rand.nextInt(10);
System.out.printf("position"+i+of numeros[20]: "+numeros[i]+"\n\n");
}
} while (i<20);
你应该只做“for”。
我看到的第二个问题是“k ++”行应该在“if”下面。记住数组从0开始到大小为1(这意味着你可以从numeros [0]访问numeros [19])。
所以在你的代码中,当k = 19时,它再次进入for,然后你加+1,所以k = 20 ..和numeros [20]这会抛出ArrayIndexOutOfBoundsException