如何停止使用随机值对该数组进行过度填充?

时间:2019-05-05 21:20:41

标签: java arrays indexoutofboundsexception

我试图用0-99的值填充苹果,并且只想在数组中使用20个空格,然后将其打印到控制台。我在第18行不断收到indexOutOfBoundsException错误。

我试图将香蕉设置为停止while循环,但我一直在填充数组。

import java.util.Random;

public class arrayFill {
    private int[] apples = new int [20];

    public static void main(String[] args) {
        arrayFill obj = new arrayFill();
        Random rand = new Random();
        arrayFill pear = new arrayFill();
        int banana = -1;
        int orange = -1;
        while(banana != 0) {
            orange = rand.nextInt(100);
            banana = pear.apples[20];
        }
        System.out.println(apples);
    }
}

我想输出具有20个随机值的apples数组,但是我总是会收到此错误。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 20
at arrayFill.main(arrayFill.java:19)

2 个答案:

答案 0 :(得分:0)

我想您是编程的新手。如果您要做的只是创建一个大小为20的数组,并使用数字0-99填充它,那么您的代码将比需要的复杂得多。这就是您所需要的:

import java.util.*;
public class arrayFill {
  public static final void main(String[] args){
    int[] apples = new int[20];
    Random rand = new Random();
    //Populating the array
    for(int i = 0; i < apples.length; i++){
        apples[i] = rand.nextInt(99);
    }
    //Printing out the array
    System.out.println(Arrays.toString(apples));
  }
}

答案 1 :(得分:0)

就像KevinO在评论中已经提到的那样,由于引用了第21个对象的pear.apples[20],您将获得ArrayIndexOutOfBoundsException。

实际上,您不需要橙色即可充满苹果。在循环的末尾添加banana++,并将条件替换为banana != 19

我建议您在代码中尝试一些组合。例如,最初将香蕉设置为0,使用<和>作为比较运算符。通过这样做,您将了解代码的工作原理。