Как я могу остановить переполнение этого массива случайными значениями? - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь заполнить яблоки значениями от 0 до 99 и хочу использовать только 20 пробелов в массиве, а затем распечатать их на консоль.Я продолжаю получать ошибки indexOutOfBoundsException в строке 18.

Я пытался настроить banana на остановку цикла 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 случайных значений, но я всегда получаю эту ошибку.

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

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Как и KevinO, уже упомянутый в комментарии, вы получаете ArrayIndexOutOfBoundsException из-за pear.apples[20], который ссылается на 21-й объект.

На самом деле вам не нужен оранжевый цвет для заполнения яблок.Добавьте banana++ в конце цикла while и замените ваше условие на banana != 19.

Я предлагаю вам попробовать некоторые комбинации в своем коде.Например, сначала установите ваш банан на 0, используйте <и> в качестве операторов сравнения.Этим вы узнаете, как работает ваш код.

0 голосов
/ 06 мая 2019

Полагаю, вы относительно новичок в программировании.Если все, что вы пытаетесь сделать, это создать массив размером 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));
  }
}
...