Я разместил свой код ниже. У меня проблема на строке, объявляющей массив wrongAnswers. Мне удалось запустить мой код раньше, но проблема в том, что кто-то взял на себя все, чтобы удалить все мои файлы. Мне удалось заставить его работать без использования List
или ArrayList
. Я просто хочу понять, как я могу получить эту работу сейчас, прежде чем попытаться использовать любой из этих методов. Я понимаю, что массивы Java неизменяемы. Тем не менее, я все еще как-то мог заставить его работать раньше. Если бы кто-то помог мне понять, что я сделал раньше, я был бы очень любезен.Объявление размера массива
private Scanner keyboard = new Scanner(System.in);
private final String[] testAnswers = {
"B","D","A","A","C",
"A","B","A","C","D",
"B","C","D","A","D",
"C","C","B","D","A"};
private String[] studentAnswers = new String[20];
/*
private String[] studentAnswers = {
"B","D","A","A","C",
"A","B","A","C","D",
"B","C","D","A","D",
"C","C","B","D","A"};
*/
private int[] wrongAnswers;
private int answeredCorrectly = 0;
public void getStudentAnswers() {
for(int x = 0; x < 20; x++) {
do {
System.out.print("Enter answer for #" + (x + 1) + " : ");
this.studentAnswers[x] = keyboard.next().toUpperCase();
if (!"A".equals(this.studentAnswers[x]) &&
!"B".equals(this.studentAnswers[x]) &&
!"C".equals(this.studentAnswers[x]) &&
!"D".equals(this.studentAnswers[x])) {
System.out.println("Invalid input.");
}
} while(!"A".equals(this.studentAnswers[x]) &&
!"B".equals(this.studentAnswers[x]) &&
!"C".equals(this.studentAnswers[x]) &&
!"D".equals(this.studentAnswers[x]));
}
}
public int totalCorrect() {
int arrayLocation = 0;
for(int x = 0; x < 20; x++) {
if (this.studentAnswers[x].equals(this.testAnswers[x]))
this.answeredCorrectly++;
else
this.wrongAnswers[arrayLocation++] = x;
}
return this.answeredCorrectly;
}
public int totalIncorrect() {
return 20 - this.answeredCorrectly;
}
public boolean passed() {
return this.answeredCorrectly >= 15;
}
public void questionsMissed() {
if(this.answeredCorrectly != 20) {
for(int x = 0; x < this.wrongAnswers.length; x++) {
System.out.println(this.wrongAnswers[x]);
}
}
}
'wrongAnswers = new int [someNumber];' Но я думаю, что было бы лучше использовать List вместо – litelite
. Я не смог бы этого сделать, поскольку размер массива wrongAnswers зависит от того, сколько правильных ответов было задано , Он будет меняться каждый раз, когда я запускаю программу. Количество должно быть гибким. –
Либо вам нужно вручную создавать новые большие, и копировать старый + новый неправильный ответ в каждый раз, когда вы хотите его добавить. Или используйте 'ArrayList' – litelite