Zufällig generierte Zahlen auf Eingabe prüfen

h4nk

Mitglied
Hallo, ich programmiere gerade mein erstes "richtiges" Programm. Es soll fürs Zahlen merken nutzbar sein.

Aufbau:
1. Nutzer gibt an, wie viele Zahlenblöcke in einer Reihe sein sollen und wie viele Reihen es geben soll.
2. Programm generiert Zufallszahlen über die Klasse Random in einer while-Schleife
3. Nutzer soll die gemerkten Zahlen eingeben.
4. Es soll geprüft werden, ob die eingegebenen Zahlen mit den generierten übereinstimmen.

Punkt 4 ist gerade mein Problem. Wie stelle ich es am besten an, die generierte Zahlenreihe aufzurufen um sie durch .equals() mit den eingetippten zu vergleichen. Sie vor der Klammer zu deklarieren, scheint in dem Fall ja nicht zu gehen (meiner Meinung nach...), oder?

Java:
package zahlenMerken;


    import java.util.Random;
    import java.util.Scanner;
    
public class zahlenMerken2 {

    public static void main(String[] args) {        
        
            Scanner scan = new Scanner(System.in);
            System.out.println("Zweier-Zahlenblöcke in einer Reihe: ");
            int zahlen = scan.nextInt();
            
            System.out.println("\nAnzahl der Reihen: ");
            int reihen = scan.nextInt();
            
            System.out.println();
            
            
           
            for (int i = 0; i < reihen; i++) {
                    int j = 0;
                    
                    while (j < zahlen) {
                        Random zufallszahl1 = new Random();
                        int zz1 = zufallszahl1.nextInt(99)+1;
                                if (zz1 < 10) {
                                System.out.print("0"+zz1+" ");
                                } else {
                                System.out.print(zz1+" ");
                                } 
                       j++;    
                    
                    }
                    System.out.println();
                
            }
           
            System.out.println("\nLösung eingeben: ");
            int pruefen = scan.nextInt();
            
            scan.close();
    }
    }


Danke schonmal! Ruhig auch andere grobe Schnitzer verbessern 😉
 
Was passiert, wenn der Benutzer keine Zahl eingibt, sondern einen Text?

Das Random Objekt muss nicht bei jedem Schleifendurchlauf neu erzeugt werden. Einmal reicht.

Du könntest die Zufallszahlen in einem Array geeigneter Dimensionierung speichern.
 
Noch kommt nur ein Fehler, soweit bin ich noch nicht.

Das Random-Objekt habe ich jetzt vor der Schleife erzeugt, danke!


außerdem habe ich versucht meine Zufallszahlen in ein mehrdimensionales Array zu speichern, ich denke das hat auch einigermaßen geklappt:

Java:
Scanner scan = new Scanner(System.in);
            System.out.println("Zweier-Zahlenblöcke in einer Reihe: ");
            int zahlen = scan.nextInt();
            
            System.out.println("\nAnzahl der Reihen: ");
            int reihen = scan.nextInt();
            
            System.out.println();
            
            int[][] zufallsspeicher = new int [reihen][zahlen];
            Random zufallszahl1 = new Random();
            
            for (int i = 0; i < reihen; i++) {
                
                for (int j = 0; j < zahlen; j++) {
                     zufallsspeicher[i][j] = zufallszahl1.nextInt(99)+1; 
                     
                     if (zufallsspeicher[i][j] < 10) {
                                 System.out.print("0"+zufallsspeicher[i][j]+" ");
                            } else {
                                System.out.print(zufallsspeicher[i][j]+" ");
                            } 
            } 
            System.out.println();
            }
            
            System.out.println();
            
            System.out.println("\nLösung eingeben: ");
            int pruefen = scan.nextInt();
            
            if (pruefen == zufallsspeicher[0][0]) {
                System.out.print("richtig");
            } else {
                System.out.print("falsch");
            }
           
            scan.close();

Mein Problem ist im Moment, dass ich nicht weiß, wie ich dem Array sage, dass ich alle Felder prüfen möchte (also z.b. [Von 0 bis Reihen][Von 0 bis Zahlen]. Stattdessen kann ich immer nur einzelne Felder prüfen, z.B. [0][0]).


Das Ergebnis sieht btw so aus:

Code:
Zweier-Zahlenblöcke in einer Reihe: 
5

Anzahl der Reihen: 
10

23 87 01 78 48 
57 47 27 34 15 
62 47 94 91 79 
96 08 05 46 82 
18 22 30 65 80 
70 47 23 35 99 
93 25 63 06 77 
97 03 27 29 64 
42 85 82 13 40 
10 06 98 30 19 


Lösung eingeben: 
23
richtig
 
Warum kann ich das nicht so prüfen?

Und was mache ich gegen das Hauptproblem – dass ich nur einzelne Felder im mehrdimensionalen Array aber nicht alle anwählen kann?
 
Arrays sind nur eine Art Regal an Variablen. Mehr können sie nicht. Du kannst auch nicht zwei Regalen sagen "vergleicht euch!" sondern das musst du machen. Und zwar Fach für Fach.
 

Zurück
Oben