Продолжать ввод значений, пока массив не заполнится?
Я создаю класс, в котором хранятся результаты тестов учащихся. Вот спецификации: Конструктор для. Создайте экземпляр массива типа 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;