Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Erste SchritteEndlosschleife & wozu braucht man /* und */
Hallo,
ich habe jetzt schon etwas länger Informatik als Unterrichtsfach und bin bei Java aber etwas hängen geblieben und habe gleich zwei Fragen.
Unsere Aufgabe war hier, dass der Spieler die Zufallszahl vom Rechner herausfinden muss indem der Rechner mit "deinen zahl ist zu groß/ klein" antwortet.
1. Ich weiß nicht genau was ich falsch mache, aber ich habe hier eine Endlosschleife erschaffen sieht irgendjemand den Fehler?
2. verstehe ich nicht ganz was in den letzten Zeilen steht das hat meine Lehrerin da hingeschrieben
wozu brauche ich das /* bzw */ am Ende?
/*if (Eingabe == Zufall)
{
JOptionPane.showInputDialog(" ... ");
}*/
Vielen Dank schonmal
Hier noch mein kompletter Code:
Java:
package Spiel;
import javax.swing.*;
public class Spiel {
public static void main(String[] args) {
// TODO Auto-generated method stub
int Zufall= (int)(Math.random()*100)+1;
String SEingabe=JOptionPane.showInputDialog("Errate meine Zahl!");
int Eingabe=Integer.parseInt(SEingabe);
int Versuch = 0;
while (Eingabe != Zufall)
{
if (Eingabe < Zufall)
{
JOptionPane.showInputDialog("Die gesuchte Zahl ist größer! Nächster Versuch:");
Versuch++;
}
else if (Eingabe > Zufall)
{
JOptionPane.showInputDialog("Die gesuchte Zahl ist kleiner! Nächster Versuch:");
Versuch++;
}
}
/*if (Eingabe == Zufall)
{
JOptionPane.showInputDialog("SUBBA du hast die Zahl in " + Versuch + " gefunden, back dir ein Eis");
}*/
}
}
ist ein Kommentar über mehrere Codezeilen. Meist werden (vermutlich) fehlerhafte Codezeilen auskommentiert anstatt sie zu löschen. Dann kann man sie einfacher wieder zurückholen, falls man sie doch vielleicht nochmal brauchen könnte.
Nachtrag: Es wundert mich ja, das mihe7 noch nicht hier war.
Meist werden (vermutlich) fehlerhafte Codezeilen auskommentiert anstatt sie zu löschen. Dann kann man sie einfacher wieder zurückholen, falls man sie doch vielleicht nochmal brauchen könnte.
@Tobias-nrw
Ja, stimmt schon. Aber wer macht das nicht so, es geht schneller, und gerade wenn man anderer Leute Code korrigiert (ist ja Unterricht, kein Review) durchaus angebracht.
Sicher...wahrscheinlich war ich eher überrascht, überhaupt mal der Erste zu sein der irgendwo antwortet. Sonst, wenn ich abends mal hier reinschaue, ist eigentlich alles immer schon abgefertigt.
ist ein Kommentar über mehrere Codezeilen. Meist werden (vermutlich) fehlerhafte Codezeilen auskommentiert anstatt sie zu löschen. Dann kann man sie einfacher wieder zurückholen, falls man sie doch vielleicht nochmal brauchen könnte.
Ahh vielen Dank
Schön dass mir das im Unterricht nicht gesagt wird sondern es einfach nur hingeschrieben wird ohne Kontext und ich die ganze Zeit versuche zu verstehen was der Befehl macht
hat das was mit den Klammern { } zu tun?
Falls ja wäre das nix neues da mache ich leider andauern Fehler
Aber ich weiß nicht was genau ich sehen soll wo meine Schleife endet.
if (Eingabe == Zufall)
{
JOptionPane.showInputDialog("SUBBA du hast die Zahl in " + Versuch + " gefunden, back dir ein Eis");
}
Einfach die letzt Klammer vor if(Eingabe == Zufall) einfach dahinter packen. Statt if (Eingabe == Zufall) kannst du auch einfach ein else benutzen (Wenn die Zahl weder kleiner noch größer als die gesuchte Zahl ist, muss sie ja die gesuchte Zahl sein).
Ach und Variable Eingabe ändert sich nie in deinem Programm. Nach einem Fehlversuch sollte die neu eingegebene Zahl gespeichert werden.
Das gepostete Programm (inkl. Addition von "System.out.println(Zufall);" nach der Zeile "int Zufall= (int)(Math.random()*100)+1;" und Erweiterung der while-Schleife) scheint noch mehr Fehler zu enthalten: bei der 1. Eingabe konnte er noch sagen, ob die eingegebene Zahl grösser oder kleiner war, danach bleibt die Aussage gleich. Ein Treffer wird mit einem Abbruch ohne Meldung ausgeführt. Siehe das Openbook zum Thema Scheifen: http://openbook.rheinwerk-verlag.de...02_007.htm#ixa371dd1848dfa1c61b6366c4e5d3b2ae
Einfach die letzt Klammer vor if(Eingabe == Zufall) einfach dahinter packen. Statt if (Eingabe == Zufall) kannst du auch einfach ein else benutzen (Wenn die Zahl weder kleiner noch größer als die gesuchte Zahl ist, muss sie ja die gesuchte Zahl sein).
Ach und Variable Eingabe ändert sich nie in deinem Programm. Nach einem Fehlversuch sollte die neu eingegebene Zahl gespeichert werden.
habe das jetzt nochmal abgeändert es sind aber noch fehler drin.
Also klammer hab hinter if(Eingabe == Zufall) gesetzt damit es von der while schleife mit eingeschlossen ist.
und hab das nit der eingabe versucht... darf man das so machen?
Java:
while (Eingabe != Zufall)
{
if (Eingabe < Zufall)
{
String Eingabe1 =JOptionPane.showInputDialog("Die gesuchte Zahl ist größer! Nächster Versuch:");
Versuch++;
}
else if (Eingabe > Zufall)
{
String Eingabe2 = JOptionPane.showInputDialog("Die gesuchte Zahl ist kleiner! Nächster Versuch:");
Versuch++;
}
if (Eingabe == Zufall) // (Eingabe1 == Zufall) // (Eingabe2 == Zufall)
{
System.out.println("SUBBA du hast die Zahl in " + Versuch + " Versuchen gefunden, back dir ein Eis");
}
}
int Zufall= (int)(Math.random()*100)+1;
String SEingabe= ""; int Eingabe= 0;
int Versuch = 0;
SEingabe= JOptionPane.showInputDialog("Errate meine Zahl!");
while (Eingabe != Zufall)
{
if (Eingabe == Zufall) break;
if (Eingabe < Zufall)
{
SEingabe= JOptionPane.showInputDialog("Die gesuchte Zahl ist größer! Nächster Versuch:");
Versuch++;
int Eingabe1 =Integer.parseInt(SEingabe); /*Ich darf es nicht "Eingabe" nennen so wie vorher, aber wenn ich es anders benenne ist es ja nicht mehr definiert*/
}
if (Eingabe > Zufall)
{
SEingabe = JOptionPane.showInputDialog("Die gesuchte Zahl ist kleiner! Nächster Versuch:");
Versuch++;
}
if (Eingabe == Zufall)
{
System.out.println("SUBBA du hast die Zahl in " + Versuch + " Versuchen gefunden, back dir ein Eis");
}
}
}
}
int Zufall= (int)(Math.random()*100)+1;
String SEingabe= ""; int Eingabe= 0;
int Versuch = 0;
SEingabe= JOptionPane.showInputDialog("Errate meine Zahl!");
while (Eingabe != Zufall) {
if (Eingabe == Zufall) break;
if (Eingabe < Zufall) {
SEingabe= JOptionPane.showInputDialog("Die gesuchte Zahl ist größer! Nächster Versuch:");
Versuch++;
int Eingabe1 =Integer.parseInt(SEingabe); /*Ich darf es nicht "Eingabe" nennen so wie vorher, aber wenn ich es anders benenne ist es ja nicht mehr definiert*/
}
if (Eingabe > Zufall) {
SEingabe = JOptionPane.showInputDialog("Die gesuchte Zahl ist kleiner! Nächster Versuch:");
Versuch++;
}
if (Eingabe == Zufall) {
System.out.println("SUBBA du hast die Zahl in " + Versuch + " Versuchen gefunden, back dir ein Eis");
}
}
int zufall= (int)(Math.random()*100)+1;
String eingabeStr;
int eingabe;
int versuch = 0;
eingabeStr = JOptionPane.showInputDialog("Errate meine Zahl!");
eingabe = Integer.parseInt(eingabeStr);
while (eingabe != zufall) {
if (eingabe < zufall) {
eingabeStr = JOptionPane.showInputDialog("Die gesuchte Zahl ist größer! Nächster Versuch:");
eingabe = Integer.parseInt(eingabeStr);
versuch++;
} else if (eingabe > zufall) {
eingabeStr = JOptionPane.showInputDialog("Die gesuchte Zahl ist kleiner! Nächster Versuch:");
eingabe = Integer.parseInt(eingabeStr);
versuch++;
}
}
// an der Stelle gilt die Schleifenbedingung nicht mehr
// d. h. es ist eingabe == zufall
System.out.println("SUBBA du hast die Zahl in " + versuch + " Versuchen gefunden, back dir ein Eis");
EDIT: noch ein paar Bezeichner umbenannt, hoffe jetzt nichts mehr übersehen zu haben, sonst muss ich das doch mal in eine IDE werfen.
Wahrscheinllich weil du versucht hast die Variable mehrfach zu initialisieren. Eine Variable kann immer nur einmal initialisiert werden, aber mehrfach definiert werden