Продолжать ввод значений, пока массив не заполнится?

Я создаю класс, в котором хранятся результаты тестов учащихся. Вот спецификации: Конструктор для. Создайте экземпляр массива типа int с длиной входного параметра. Каждый элемент в массиве инициализируется как -1. б. Счетчик установлен на 0. Это не длина массива, а количество действительных результатов. Другими словами, счет является частично заполненным массивом, и счет используется в качестве конечной позиции действительных результатов. с. Задайте имя с помощью второго входного параметра.

У меня проблемы с методом добавления. Я должен ввести размер для того, сколько тестов будет проходить студент, а затем добавить оценки для каждого теста, который они взяли, пока массив не заполнится.

Пример: если я введу размер теста, равный 3, я смогу добавить 3 разных результата, но если я перейду больше 3, то должно отобразиться сообщение "Массив заполнен. Значение _____ не может быть добавлено",

вот что у меня есть для моего класса:

public class Quiz {

    private static int [] scores;
    private  int count;
    private static String name;


    public Quiz (int[] scores, int count, String name){
        int size=0;
        scores=new int [size];
        count=0;
        name=" ";
    }

    public void addScores( int [] scores){
        int size=0;
        scores=new int [size];
        for(int i=0; i<size;i++)
            if(i<size)
               System.out.println(scores[i]);   
            else
                System.out.println("Array is full! the value"+ " " + scores + " "+ "cannot be added.");

}

вот часть кода тестового драйвера:

Scanner in = new Scanner (System.in);

do {
    System.out.println("\nPlease enter a command or type ?");
    String choice;

    choice = in.next().toLowerCase();
    command = choice.charAt(0);
    switch (command) {
        case 'n':
            System.out.println("[Create a new data]");
            System.out.println("[Input the size of quizzes]:"+ " ");
            int size=in.nextInt();
            String linebreak = in.nextLine();
            System.out.println("[Input the name of student]:"+ " ");
            String name=in.nextLine();

            break;

        case 'a':
            System.out.println("a [Add a score]:"+ " ");{

            int i=0;            
            i=in.nextInt();

            break;
    }
}

1 ответ

Посмотрите на код в вашем addScores метод. Вы передаете ему массив int scores но вы устанавливаете его значение в новый массив размером 0. Вам нужно пропустить следующую строку:

 scores=new int [size];

И вам нужно установить переменную размера для размера входящего массива.

 int size = scores.length;
Другие вопросы по тегам