importjavax.swing.*;publicclassZahlenRaten{publicstaticvoidmain(String[] args){int a ;//Zufallszahlint b ;// Geratene ZahlString ausgabe;
a=(int)(100*Math.random());// erzeugen der ZufallszahlJTextField[] feld ={newJTextField()};// Erzeugen des Eingabefeldes für die Geratene ZahlObject[] msg ={"Raten Sie bitte eine Zahl von 1 bis 100:", feld[0]};int click =JOptionPane.showConfirmDialog(null, msg,"Eingabe",2);
b =Integer.parseInt(feld[0].getText());// String-->int// Vergleichen der Geratenen Zahl mit der Zufallszahl(<,>,=)if(b==a){// Geratene Zahl ist gleich Zufallszahl
ausgabe="Hurra";}elseif(b>=a)// Geratene Zahl ist größer als die Zufallszahl
ausgabe ="Ihre Zahl ist zu groß";}else{// Geratene Zahl ist kleiner als die Zufallszahl
ausgabe="Ihre Zahl ist zu klein";}JOptionPane.showMessageDialog(null,ausgabe,"Ergebnis",JOptionPane.PLAIN_MESSAGE);}}
Bei der if-elseif Leiter tauchen Fehler auf.
Ziel des Programms ist es eine vom Nutzer eingegebene Zahl mit einer von Programm erzeugten Zufallszahl zu vergleichen. Der Nutzer soll eine Ausgabe erhaltern ob seine Zahl stimmt (bzw größer oder kleiner als die Zufallszahl ist) und wenn nicht einen neuen Versuch haben bis er die Zahl errät. Das Programm soll dann die Anzahl der Versuche ausgeben.
Der Teil mit dem Zähler fehlt noch aber ich will erstmal die if-else-if Leiter fertig bauen bevor ich mich daran heran wage.
welcher fehler tritt denn auf?
kleiner schönheitsfehler ist if(b>=a)... if(b>a) ist schöner erzeugt aber keinen fehler.
sonst fehlt ein klammer auf bei einem if
importjavax.swing.*;publicclassZahlenRaten{publicstaticvoidmain(String[] args){int zaehler;int a ;//Zufallszahlint b ;// Geratene ZahlString ausgabe;String ausgabe2;
a=(int)(99*Math.random()+1);// erzeugen der Zufallszahl 1-100
zaehler =0;
b =0;// damit a=b zu diesem Zeitounkt ausgeschloßen istwhile( a != b ){//mache ... solange geratene Zahl ungleich ZufallsZahlJTextField[] feld ={newJTextField()};// Erzeugen des Eingabefeldes für die Geratene ZahlObject[] msg ={"Raten Sie bitte eine Zahl von 1 bis 100:", feld[0]};int click =JOptionPane.showConfirmDialog(null, msg,"Eingabe",2);
b =Integer.parseInt(feld[0].getText());// String-->int// Vergleichen der Geratenen Zahl mit der Zufallszahl(<,>,=)if(b==a){// Geratene Zahl ist gleich Zufallszahl
ausgabe ="Hurra";}elseif(b>=a){// Geratene Zahl ist größer als die Zufallszahl
ausgabe ="Ihre Zahl ist zu groß";}else{// Geratene Zahl ist kleiner als die Zufallszahl
ausgabe ="Ihre Zahl ist zu klein";}}
zaehler++;
ausgabe2=zaehler +".Versuche"+ ausgabe ;JOptionPane.showMessageDialog(null, ausgabe2,"Ergebnis",JOptionPane.PLAIN_MESSAGE);}}
Er sagt mir das ausgabe nicht initialisert wurde. Vor der while Schleife hat das noch geklappt ...
du initialisierst ausgabe in einer kontrollstruktur. das solltest du vermeiden, weil der compiler dort nie sicher gehn kann, dass die Variable wirklich initialisiert wird. würde dir empfehlen ausgabe in diesem fall direkt bei der Deklaration zu initialisieren.