当前位置: 首页 > 面试题库 >

用户输入中不重复数字

任昊苍
2023-03-14
问题内容

我正在尝试找出如何创建输入验证的方法,在该方法中,您不能两次输入相同的数字,而且不能在数字范围内输入,除非它是整数,否则无法输入任何内容。我目前正在创建彩票程序,不确定如何执行此操作。任何帮助将非常感激。我的数字范围验证有效,而其他两个验证无效。我尝试了非重复号码验证,但我不确定如何执行仅数字验证。有人可以告诉我如何构建此结构。

此方法在我的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]


 类似资料:
  • 我正在使用useState处理一个待办事项,我试图保存用户输入,然后在他们点击提交后将其推送到listArray,稍后显示它...我认为我在updateArray函数中做错了什么,但我似乎可以理解什么。

  • 我正在使用Java的扫描仪读取用户输入。如果我只使用nextLine一次,它可以正常工作。对于两个nextLine,第一个不等待用户输入字符串(第二个)。 输出: X:Y:(等待输入) 我的代码 你知道为什么会发生这种事吗?谢谢

  • 首先要说的是,我对stackoverflow中的“提问”还不熟悉,所以如果我的问题不属于正确的类别,或者已经有人问过类似的问题,我表示歉意。我试图找到一个相关的问题,但我找不到。我的有点特别,这将作为我将来编程的一个例子。 我尝试创建的简单程序的流程是: > 起始编号为的,例如0 该数字递增1,直到该数字增加到100个数字,此时... 程序询问"Y/N"是否是,然后重复步骤1和2(每次重复这个过程

  • 问题内容: 我正在编写一个简单的猜谜游戏程序,用户将输入一个数字来尝试猜测一个随机生成的数字。 如果他们的号码正确,我想给他们选择再次玩的机会。 这是我的代码: 游戏进行完毕,但是提示用户再次玩游戏时,什么都没有发生? 有什么建议? 问题答案: 这是完整的代码,完全可以使用并经过测试。

  • 该代码基于用户输入的列表。然后显示列表并要求输入y/n。如果是,它会显示回车,并允许您输入用逗号分隔的数字。这很好。 然而,在当循环之后,它会启动我还不明白的collections.frequency。只有当数字像12一样一个接一个地输入时,它才起作用,然后点击输入更多的数字,直到按下n。这打破了循环。并显示重复的列表。 然而,如果一次将所有数字输入到一行中,如12、23、55等,则不起作用。它不

  • 当用户输入字符串(例如“”)时,程序应该给出输出“”,然后提示用户键入有效输入。当我键入字符串时,我会在线程“main”java.util.InputMismatchException中得到错误消息