Java, Programmieren

Hallo, ich komme bei folgender Aufgabe nicht weiter, weswegen ich Eure Hilfe benötige:

Schreiben Sie eine Applikation, bei der eine per Zufallsgenerator erzeugte
Zahl zwischen 0 und 20 erraten werden muss. Das Erraten der Zahl erfolgt
über eine Dialogbox. Dieser Vorgang soll solange wiederholt werden, bis die
Zahl erraten wurde. Bei jedem missglückten Rateversuch soll angegeben
werden, ob die eingegebene Zahl größer oder kleiner als die zu erratende
Zahl ist. Wird die Zahl erraten soll ebenfalls ein entsprechender Text
ausgegeben werden.
a) Verwenden Sie zur Erzeugung der Zufallszahl die Methode
nextInt(int i) der Klasse Random.
b) Verwenden Sie zur Erzeugung der Zufallszahl die Methode random()
der Klasse Math.
Hinweis: Verwenden Sie eine while-Schleife und als Schleifenbedingung eine
Variable vom Typ Boolean.

Ich bin bislang noch nicht wirklich weit gekommen:

public static void main(String[] args) {

String eingabe;
int i;
int zahl;

final Random r = new Random ();
i = r.nextInt(21);

eingabe = JOptionPane.showInputDialog(„Bitte geben Sie eine Zahl zwischen 0 und 20 ein“);
zahl = Integer.parseInt(eingabe);

while (true)
{
JOptionPane.showMessageDialog(null,„Glückwunsch! Sie haben die Zahl richtig erraten“);
}

}
}

Ich weiß nicht wie ich die einzelnen Bedingungen alle in eine while-Schleife verarbeiten soll.

  1. Schleife mit Variable als Bedingung
    boolean flag = true;
    while(flag) {

  2. Eingabeverarbeitung innerhalb der Schleife
    while(flag) {
    // Abfrage der Zahl gehört hier hinein
    zahl =
    // Vergleich ob größer, kleiner oder gleich
    if(zahl
    // dementsprechende Ausgabe
    showMessage
    // wenn gleich aufhören
    flag = false;
    }

ist nur mal exemplarisch, aber ich sollte dich etwas weiterbringen

Hallo,

Eine Lösung könnte so aussehen:

import java.util.Random;
import javax.swing.JOptionPane;

public class zahlenraten {
public static void main(String[] args) {

String eingabe;
int i;
int zahl;
boolean geraten = false;

final Random r = new Random ();
i = r.nextInt(21);

while (geraten == false){
eingabe = JOptionPane.showInputDialog(„Bitte geben Sie eine Zahl zwischen 0 und 20 ein“);
zahl = Integer.parseInt(eingabe);
if(i == zahl){
JOptionPane.showMessageDialog(null,„Glückwunsch! Sie haben die Zahl richtig erraten“);
geraten = true;
}
if(i zahl){
JOptionPane.showMessageDialog(null,„Leider falsch. Die gesuchte Zahl ist größer.“);
}
}
}
}

Die While-Schleife muss schon früher beginnen damit die Eingabe sich wiederholen lässt. Die Prüfung muss innerhalb der Schleife stattfinden.

booolean erraten = false;
while (!erraten)
{
eingabe = JOptionPane.showInputDialog(„Bitte geben Sie eine Zahl zwischen 0 und 20 ein“);
zahl = Integer.parseInt(eingabe);
erraten = i == zahl; // Eingabe mit Randomzahl vergleichen. Das Ergebnis wird in die Variable erraten geschrieben, welche als Schleifenbedingung abgefragt wird.
}
JOptionPane.showMessageDialog(null,„Glückwunsch! Sie haben die Zahl richtig erraten“); // Erst wenn die Schleife verlassen wurde, ist sichergestellt das die eingegebene Zahl richtig ist.

Hoffe das Hilft dir weiter.
Gruss
Rafael

P.S.: Den rest von deinem Code, den ich in der Antwort nicht geschrieben habe, entsprechend davor bzw. danach einfügen.

Gruss
Rafael

Ich hoffe das ich dich jetzt richtig verstehe wo du was speicherst

Eingabe ist der String der vom user eingegeben wird („is Klar“)

Int I ist die zufahlszahl

und Zahl ist die Eingabe in Interger Form

dann würde der Code von dir bei mir so aussehen

public static void main(String[] args) {

String eingabe;
int i;
int zahl;

final Random r = new Random ();
i = r.nextInt(21);

while (true)
{
eingabe = JOptionPane.showInputDialog(„Bitte geben Sie eine Zahl zwischen 0 und 20 ein“);
zahl = Integer.parseInt(eingabe);
if(zahl = i){
JOptionPane.showMessageDialog(null,„Glückwunsch! Sie haben die Zahl richtig erraten“);
}else{
if (zahl i){
JOptionPane.showMessageDialog(null,„Die Zahl ist Kleiner“);
}
}

}
}

Vielen Dank für deine Hilfe. Jetzt funktioniert das Programm bei mir auch :smile:

Vielen Dank für deine Hilfe. Jetzt funktioniert das Programm
bei mir auch :smile:

Nur mal so Ich bin bei Java nur anfänger Und KEIN Experte

Hallo,

die Bedingung einer while-Schleife mit true zu belegen ist kein guter Programmierstil.

Du könntest eine boolean erraten anlegen, welche du zuerst mit false initialisiert.
Dann beginnt die Schleife die zu Beginn jedes Durchlaufs prüft ob erraten true ist.
Im Schleifenkörper lässt du dann vom Benutzer die Zahl eingeben und prüfst ob diese die Zufallszahl ist.
Wenn ja, dann wird erraten auf true gesetzt und die Schleife ist beendet und das Programm gibt die Erfolgsmeldung aus.
Wenn nicht, machst du noch eine zweite if-else-Abfrage ob die eingegebene Zahl größer oder kleiner ist. Hierbei wird die erraten-Variable nicht angetastet und somit beginnt die Schleife dann wieder von vorn.