java - 用户输入的数字不重复

标签 java validation numbers

我正在尝试创建一个输入验证,它不会让您输入相同的数字两次以及在数字范围内,并且除非它是整数,否则无法输入任何内容。我目前正在创建一个彩票程序,但我不确定如何执行此操作。任何帮助将非常感激。我的数字范围验证有效,但其他两个验证无效。我尝试了非重复数字验证,但我不确定如何仅进行数字验证。有人可以告诉我如何构造这个吗?

这个方法在我的 Player 类中

public void choose() {
        int temp = 0;

        for (int i = 0; i<6; i++) {
            System.out.println("Enter enter a number between 1 & 59");
            temp = keyboard.nextInt();
            keyboard.nextLine();
            while ((temp<1) || (temp>59)) {
                System.out.println("You entered an invalid number, please enter a number between 1 and 59");
                temp = keyboard.nextInt();
                keyboard.nextLine();
            }

            if (i > 0) {
                while(temp == numbers[i-1]) {
                    System.out.println("Please enter a different number as you have already entered this");
                    temp = keyboard.nextInt();
                    keyboard.nextLine();
                }
            }
            numbers[i] = temp;
        }
    }

最佳答案

按如下方式进行:

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;
        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): ");
                temp = keyboard.nextInt();
                if (temp < 1 || temp > 59) {
                    System.out.println("Error: Invalid 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
        }
    }
}

示例运行:

Enter in an integer (from 1 to 59): 100
Error: Invalid integer.
Enter in an integer (from 1 to 59): -1
Error: Invalid integer.
Enter in an integer (from 1 to 59): 20
Enter in an integer (from 1 to 59): 0
Error: Invalid integer.
Enter in an integer (from 1 to 59): 4
Enter in an integer (from 1 to 59): 5
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): 25
Enter in an integer (from 1 to 59): 6
Enter in an integer (from 1 to 59): 23
[20, 4, 5, 25, 6, 23]

关于java - 用户输入的数字不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60544576/

相关文章:

javascript - 在 lakh/crore 系统中将数字转换为单词

algorithm - 计算数字出现次数

java - MongoDB:使用 or 语句查询

java - 在没有spring boot的情况下使用spring mvc项目配置angular 2

django - 在 Django 管理中替换 "this field is required"消息

jquery - 使用 javascript/jquery 检测 Asp.Net 表单是否有效

Java子窗口: Netbeans

java - 在 eclipse 中从 .xsd 模式生成 Java 类

python - 如何使用 string 和 int 验证 python 中的数据?

python - 将小数输入转换为 int 时出错