With this Lottery program I am trying to make sure the number are within a range of 1-59, The same number cannot be entered twice and that only numbers can be entered. The only bit of code I need help on is on the only numbers can be entered part.
public void choose() {
System.out.println("\n");
int temp;
boolean valid;
for (int i = 0; i < 6; i++) {
do {
valid = true;
System.out.print("Enter in an integer from 1 to 59: ");
temp = keyboard.nextInt();
if (temp < 1 || temp > 59) {
System.out.println("Error, please enter a valid integer !!");
valid = false;
}
for (int j = 0; j < i; j++) {
if (numbers[j] == temp) {
System.out.println("Please enter a different number as you have already entered this !!");
valid = false;
break;
}
}
numbers[i] = temp;
} while (!valid);
}
}
解决方案
Do it as follows:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int[] numbers = new int[6];
static Scanner keyboard = new Scanner(System.in);
public static void main(String args[]) {
// Test
choose();
System.out.println(Arrays.toString(numbers));
}
static void choose() {
int temp = 0;
boolean valid;
for (int i = 0; i < 6; i++) {
// Check if the integer is in the range of 1 to 59
do {
valid = true;
System.out.print("Enter in an integer (from 1 to 59): ");
try {
temp = Integer.parseInt(keyboard.nextLine());
if (temp < 1 || temp > 59) {
System.out.println("Error: Invalid integer.");
valid = false;
}
} catch (NumberFormatException e) {
System.out.println("Error: The input is not an integer.");
valid = false;
}
for (int j = 0; j < i; j++) {
if (numbers[j] == temp) {
System.out.println("Please enter a different number as you have already entered this");
valid = false;
break;
}
}
numbers[i] = temp;
} while (!valid); // Loop back if the integer is not in the range of 1 to 100
}
}
}
A sample run:
Enter in an integer (from 1 to 59): a
Error: The input is not an integer.
Enter in an integer (from 1 to 59): 12.23
Error: The input is not an integer.
Enter in an integer (from 1 to 59): 10
Enter in an integer (from 1 to 59): 200
Error: Invalid integer.
Enter in an integer (from 1 to 59): 20
Enter in an integer (from 1 to 59): 5
Enter in an integer (from 1 to 59): 10
Please enter a different number as you have already entered this
Enter in an integer (from 1 to 59): 20
Please enter a different number as you have already entered this
Enter in an integer (from 1 to 59): 6
Enter in an integer (from 1 to 59): 7
Enter in an integer (from 1 to 59): 12
[10, 20, 5, 6, 7, 12]