Entonces, lo que hice es, hice una función que genera un número aleatorio, y quiero que todos los números aleatorios generados se coloquen dentro de una matriz, y hice una cosa de inicio de sesión, y quiero verificar si el número ingresado en Iniciar sesión Entrada coincide al menos un elemento en la matriz que hice con algunos números generados. Ahora, mi problema es, cada vez que ingreso un número generado en Iniciar sesión, el programa comprueba solo el último elemento de mi matriz, no todo el elemento. Aquí está mi código:

    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;
            }
        
}   

Aquí está el problema en mi salida:

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!

El número no pudo aceptar el programa aunque está en mi matriz. ¿Que se supone que haga?

0
Sambajon Patrick 29 may. 2021 a las 07:37

1 respuesta

La mejor respuesta

Necesita un bucle y comparar todos los valores en la matriz con la entrada del usuario. En este momento, solo está comparando el elemento al conteo que siempre va a ser el último elemento.

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!");
   }
}

Para generar números aleatorios por encima de 9000 puede hacer

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

Tenga en cuenta que cambié el count++ después de la inserción en matriz. Esto se realizó de modo que se utiliza el primer índice de la matriz que es 0. De lo contrario, almacena el primer valor en el índice 1.

Salida:

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

Enter number: 194403844
Hi
1
Goion 29 may. 2021 a las 05:49