Ich soll ein Programm Zahlenraten schreiben, in dem das Programm eine Zufallszahl ermittelt und der Benutzer diese herausfinden soll, wobei Ein- und Ausgabe über ein JOptionPane erfolgen soll. Nur bekomme ich den wiederholten Dialog nicht hin! Ich hab schon verschiedene Schleifenarten ausprobiert. Gibt der Benutzer zum ersten Mal eine Ratezahl ein so funktioniert es doch beim zweiten Mal schließt sich einfach das Fenster oder er bleibt in einem Fall hängen. Hier ist ein Code bei dem das Programm in einer Schleife hängen bleibt. Ich glaub dass das Problem darin liegt dass er ab der zweiten Eingabe die Ratezahl gar nicht mehr richtig bekommt.
Habt ihr einen Rat?
Code:
import javax.swing.JOptionPane;
public class Aufgabe73{
public static void main (String args []){
String ausgabe;
int ratezahl;
int zufallszahl;
ausgabe = JOptionPane.showInputDialog("Rate die Zahl zwischen 0 und 20");
zufallszahl = (int) (Math.random()*20);
ratezahl=Integer.parseInt(ausgabe);
while(ratezahl > zufallszahl){
ausgabe = "Falsch geraten! Die Zahl muss kleiner sein. Versuchs nochmal";
JOptionPane.showInputDialog(null,ausgabe);
}
while(ratezahl < zufallszahl)
{
ausgabe = "Falsch geraten! Die Zahl muss größer sein. Versuchs nochmal";
JOptionPane.showInputDialog(null,ausgabe);
}
if(ratezahl==zufallszahl)
{
ausgabe = "Gratuliere! Richtig geraten!";
JOptionPane.showInputDialog(null,ausgabe);
System.exit(0);
}
}
}
du meinst so? Natürlich auch in der zweiten While-Schleife. Da spuckt er eine Fehlermeldung aus.
Code:
while(ratezahl > zufallszahl){
ausgabe = "Falsch geraten! Die Zahl muss kleiner sein. Versuchs nochmal";
JOptionPane.showInputDialog(null,ausgabe);
ratezahl=Integer.parseInt(ausgabe);
}
while(ratezahl > zufallszahl){
ausgabe = "Falsch geraten! Die Zahl muss kleiner sein. Versuchs nochmal";
String eingabe=JOptionPane.showInputDialog(null,ausgabe); //du möchtest doch die "Zahl" aus dem Eingabefeld haben
ratezahl=Integer.parseInt(eingabe);
}
Du solltest dir vlt Gedanken darüber machen, einen try/catch Block um das parseInt zu legen, wenn man etwas anderes als Zahlen eingibt ("test") kann er die natürlich nicht parsen und es fliegt eine Exception. Was du damit dann machst, bleibt dann dir überlassen - Dialog, neue Eingabemöglichkeit, Programm beenden...
Danke für deine Hilfe! Aber so hat es leider auch nicht funktioniert aber ich habs schon geschafft-ich muss die while Schleife früher beginnen lassen und die zufallszahl davor schreiben.
Aber stimmt an das hab ich noch gar nicht gedacht!
Mein Kopf wird langsam wirr!
Danke!
lg