有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java每次都将输入值与数组中的一个元素进行匹配

我做了一个生成随机数的函数,我想把所有生成的随机数都放在一个数组中。我做了一个登录操作,我想检查输入的数字是否与数组中的至少一个元素与生成的数字匹配
现在我的问题是,每当我输入一些数字时,程序只检查数组的最后一个元素。这是我的密码:

int sukicode[] = new int[100];
int count = 0;
boolean again = true, notReg = true;
Scanner scan = new Scanner(System.in);
Random rand = new Random();

while (again) {
    int x;
    for (x = 1000; x < 9000; ) {
        x = rand.nextInt();
    }
    count++;

    System.out.println(x);
    sukicode[count] = x;
    System.out.println("[1]Display array?\n[2]Log in\n[3]Generate random number");
    System.out.print("Select: ");
    int ch = scan.nextInt();

    if (ch == 1) {
        again = false;
        for (int i = 1; i <= count; i++) {
            System.out.println(sukicode[i]);
        }
    } else if (ch == 2) {
        again = false;
        while (notReg) {
            System.out.print("\nEnter number: ");
            int a = scan.nextInt();
            if (a == sukicode[count]) {
                notReg = false;
                System.out.println("Hi");
            } else {
                notReg = true;
                System.out.println("You're not in yet!");
            }
        }
    } else if (ch == 3) {
        again = true;
    }
}

以下是我的输出中的问题:

1918509534
[1]Display array?
[2]Log in
[3]Generate random number
Select: 3
2043799299
[1]Display array?
[2]Log in
[3]Generate random number
Select: 3
279697469
[1]Display array?
[2]Log in
[3]Generate random number
Select: 3
622842603
[1]Display array?
[2]Log in
[3]Generate random number
Select: 2

Enter number: 279697469
You're not in yet!

程序无法接受该数字,尽管它在我的数组中。我该怎么办


共 (1) 个答案

  1. # 1 楼答案

    您需要一个for循环,并将数组中的所有值与用户输入进行比较。现在,你只是比较计数时的元素,它总是最后一个元素

    while (notReg) {
       System.out.print("\nEnter number: ");
       int userGuess = scan.nextInt();
       for (int element : sukicode) {
          if (element == userGuess) {
             notReg = false;
             System.out.println("Hi");
             break; // Quits for loop early since there is no need to compare rest of elements
          }
       }
       // If none of the elements matched the input then this will print
       if (notReg) {
          System.out.println("You're not in yet!");
       }
    }
    

    要生成9000以上的随机数,您可以

    int randomNumber = rand.nextInt(Integer.MAX_VALUE) + 9000;  // The lower bound will be 9000
    System.out.println(randomNumber);
    sukicode[count] = randomNumber;
    count++;
    

    注意,在数组中插入后,我移动了count++。这样做是为了利用数组的第一个索引0。否则,它将第一个值存储在索引1

    输出:

    194403844
    [1]Display array?
    [2]Log in
    [3]Generate random number
    Select: 2
    
    Enter number: 194403844
    Hi