#java #arrays #for-loop
Вопрос:
Я написал код для получения значений от пользователей 5 раз, но разрешаю вводить только уникальные значения, однако он работает неправильно ( часть проверяет, является ли это уникальным значением или нет).
Вот код:
for (int answerUserTries = 0; answerUserTries lt; 5; answerUserTries ) { System.out.println("Please enter the number"); int answerUser = in.nextInt(); for (int w=0;wlt;5;w ) { if (answerArray[w] == answerUser) { System.out.println("Please enter the number REPEATING NUMBER"); w=6; } else { answerArray[w] = answerUser; } }
Это работает нормально, но когда я помещаю не уникальное значение в массив, в результате он пишет, что это не уникальное значение, однако у него всего 5 входов, и когда я помещаю не уникальное значение, ввод также считается. Как я могу это исправить? Вот результат выполнения кода:
Please enter the number 1 Please enter the number 1 Repeating Number Please enter the number 1 Repeating Number Please enter the number 1 Repeating Number Please enter the number 1 Repeating Number
А затем программа останавливается
Комментарии:
1. ну, петли выполняются только 5 раз
for (int answerUserTries = 0; answerUserTries lt; 5; answerUserTries )
2. Итак, вам нужно 5 уникальных номеров. Это означает, что у вас не может быть цикла от 0 до 5, потому что вы не знаете, сколько попыток это займет. Вместо этого вам нужна
while
петля. УдарanswerUserTries
только при успешном добавлении.
Ответ №1:
Вам нужно нажимать на счетчик только тогда, когда у вас есть успех. Вам нужно только просмотреть столько ответов, сколько вы получили , и вам нужно добавить свою запись в answerUserTries
, а не в w
:
int answerUserTries = 0; while(answerUserTries lt; 5) { System.out.println("Please enter the number"); int answerUser = in.nextInt(); bool success = true; for (int w=0;wlt;answerUserTries;w ) { if (answerArray[w] == answerUser) { System.out.println("Please enter the number REPEATING NUMBER"); success = false; break; } } if( success ) { answerArray[answerUserTries] = answerUser; answerUserTries ; } }