Java 用户输入中的数字不重复
通过这个彩票程序,我试图确保数字在1-59之间,同一数字不能输入两次,只能输入数字。我唯一需要帮助的代码是关于只能输入数字的部分Java 用户输入中的数字不重复,java,validation,do-while,Java,Validation,Do While,通过这个彩票程序,我试图确保数字在1-59之间,同一数字不能输入两次,只能输入数字。我唯一需要帮助的代码是关于只能输入数字的部分 public void choose() { System.out.println("\n"); int temp; boolean valid; for (int i = 0; i < 6; i++) { do { valid = tru
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);
}
}
公共空间选择(){
System.out.println(“\n”);
内部温度;
布尔有效;
对于(int i=0;i<6;i++){
做{
有效=真;
System.out.print(“输入1到59之间的整数:”);
temp=键盘.nextInt();
如果(温度<1 | |温度>59){
System.out.println(“错误,请输入有效整数!!”;
有效=错误;
}
对于(int j=0;j
按以下步骤操作:
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
}
}
}
尝试:
System.out.println(“\n”);
内部温度;
布尔有效;
对于(int i=0;i<6;i++){
做{
有效=真;
System.out.print(“输入1到59之间的整数:”);
而(!keyboard.hasNextInt()){
键盘。下一步();
System.out.println(“错误!请输入一个数字”);
System.out.print(“输入1到59之间的整数:”);
}
temp=键盘.nextInt();
如果(温度<1 | |温度>59){
System.out.println(“错误,请输入有效整数!!”;
有效=错误;
}
对于(int j=0;j
您可以使用方法
keyboard.hasnetint()
检查用户是否输入了int,这可能是最有效的方法,但很复杂
问我你是否需要解释一下
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<String> numbers = new ArrayList<>(6);
String s ;
do {
System.out.println("Enter a number between 1 and 59");
s = scanner.nextLine().toString();
}
while(!s.matches("[0-9]|[1-5][0-9]") || numbers.contains(s) || numbers.size() < 5 && numbers.add(s));
}
}
公共类测试{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
ArrayList编号=新的ArrayList(6);
字符串s;
做{
System.out.println(“输入一个介于1和59之间的数字”);
s=scanner.nextLine().toString();
}
而(!s.matches(“[0-9]|[1-5][0-9]”)||numbers.contains|numbers.size()<5&&numbers.add(s));
}
}
另外,请告诉我,如果您需要提示输入无效的范围/格式和重复条目,我将想出一种方法来存储输入的数字,您可能需要使用Set()。然后,你可以使用contains()来检查是否已经输入了一个数字,而不是在输入的数字中显式循环。我昨天没有回答吗?看我的答案,有人能把它缩短吗?你想把这6个数字都要回去吗,用在适合这种特殊情况的地方,您应该努力使用
nextLine
而不是next
,nextLine
等。检查
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: ");
while (!keyboard.hasNextInt()) {
keyboard.next();
System.out.println("Error.! Please enter a number");
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);
}
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<String> numbers = new ArrayList<>(6);
String s ;
do {
System.out.println("Enter a number between 1 and 59");
s = scanner.nextLine().toString();
}
while(!s.matches("[0-9]|[1-5][0-9]") || numbers.contains(s) || numbers.size() < 5 && numbers.add(s));
}
}