То, что вы хотите сделать, это использовать рекурсию, чтобы вы могли попросить их снова ввести данные. Вы можете определить варианты вместо 6. Вы можете определить maxExclusive вместо 59 (60 в данном случае). Вы можете отслеживать выбранные в качестве набора целочисленных значений, поскольку наборы могут содержать только уникальные ненулевые значения. В конце каждого вызова выбора, который мы вызываем, выберите выбор снова, оставив на 1 меньше выбора вместо a для l oop. В начале каждого вызова метода мы проверяем, является ли выбор <0, если это так, мы предотвращаем выполнение. </p>
public void choose(Scanner keyboard, int choices, int maxExclusive, Set<Integer> chosen) {
if (choices <= 0) {
return;
}
System.out.println("Enter enter a number between 1 & " + (maxExclusive - 1));
int value = keyboard.nextInt();
keyboard.nextLine();
if (value < 1 || value >= maxExclusive) {
System.out.println("You entered an invalid number.");
choose(keyboard, choices, maxExclusive, chosen);
return;
}
if (chosen.contains(value)) {
System.out.println("You already entered this number.");
choose(keyboard, choices, maxExclusive, chosen);
return;
}
chosen.add(value);
choose(keyboard, --choices, maxExclusive, chosen);
}
choose(new Scanner(System.in), 6, 60, new HashSet<>());