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.
Schleife mit Variable als Bedingung
boolean flag = true;
while(flag) {
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
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.
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“);
}
}
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.