Java: Значение повторяется в массиве с ввода пользователя

#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  ;  } }