Как правильно добавить переменную в массив? - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь присвоить переменную массиву, но продолжаю получать ошибку ArrayIndexOutOfBounds, и я озадачен, почему она не работает.

ВОПРОС: Напишите программу, которая читает произвольное число целых чиселкоторые находятся в диапазоне от 0 до 50 включительно и подсчитывают, сколько экземпляров каждого введено.Укажите конец ввода значением вне диапазона.После того, как весь ввод был обработан., Выведите все значения (с количеством вхождений), которые были введены один или несколько раз.

import java.util.Scanner;
public class IntCounter {
public static void main (String[]args) {

//variables 
int i = 0;
final int MaxValue = 51;

int userInput[]=new int[i]; //Initializing array to store user unput
Scanner scan = new Scanner(System.in); //Initializing scanner




   for(i=0; i<MaxValue; i++) {

        System.out.println("please enter a number" + "between 0 and      50, or greater then 50 to finish"");
        int u = scan.nextInt();

        if (u<MaxValue) {
        userInput[i]=u; //THIS IS WHERE THE ERROR IS
        }

    }



 //outputs array values after typing a value out of range
    for(int o=0; o<=i; o++,i++) {
        System.out.println("Your values are:" + userInput[i]);


    }

}}

OUTPUT:
please enter a number
4
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:       Index 0 out of bounds for length 0
 at IntCounter.main(IntCounter.java:21)

Ответы [ 3 ]

1 голос
/ 26 сентября 2019
int i = 0;
final int MaxValue = 51;

int userInput[]=new int[i];

Здесь вы инициализируете userInput 0, возможно, вы хотите сделать:

int userInput[]=new int[MaxValue];

, который объявит массив размером 51.

ArrayIndexOutOfBoundsException происходит всякий раз, когда вы пытаетесь получить доступ к позиции в массиве, превышающей размер массива.

Очевидно, что размер 0 не сможет содержать никаких элементов, поэтому всегда выдает Exception.

1 голос
/ 26 сентября 2019
int i = 0;

int userInput[]=new int[i]; // here you are creating an array of length 0. so you can not assign any value in it.


int userInput[]=new int[MaxValue];// I think you mean this while creating array.
0 голосов
/ 26 сентября 2019

Вы объявили массив размера i следующим образом

int userInput[]=new int[i]

Однако значение равно 0 Следовательно, оно создает массив размера 0, вызывая тем самым ArrayIndexOutOfBoundsException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...