Erste Schritte Endlosschleife & wozu braucht man /* und */

Bitte aktiviere JavaScript!
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");
  }*/
  
  }
}
 
Zuletzt bearbeitet von einem Moderator:
A

Anzeige




Schau mal hier —> (hier klicken)
Java:
/*
    irgendein Text
*/
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. :D
 
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.
Das ist verpönt. Eigentlich sind die anmerkend zum Code gedacht um den zu beschreiben oder rklären.

Es wundert mich ja, das mihe7 noch nicht hier war.
Wird auch nicht 24h im Forum unterwegs sein. :p
 
@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.

Wird auch nicht 24h im Forum unterwegs sein. :p
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.
 
Zuletzt bearbeitet:
Java:
/*
    irgendein Text
*/
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
 
Deine while-Schleife umschließt nicht
Code:
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.
 
Deine while-Schleife umschließt nicht
Code:
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
oh ja stimmt ich mache das später gleich einmal und sag dann ob’s geklappt hat
Danke :)
 
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/javainsel9/javainsel_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");
    }
   }
 
Zuletzt bearbeitet von einem Moderator:
Überleg Dir mal, ohne Code, was Du eigentlich willst und versuche, das in einen Algorithmus und anschließend in Code zu übersetzen.

Verkürztes Beispiel: ich möchte vom Benutzer Eingaben abfragen, und zwar so lange, bis er eine zuvor zufällig gewählte Zahl erraten hat.

Ansatz:
Code:
1. zahl := zufällige Zahl
2. eingabe := Eingabe des Benutzers
3. falls eingabe != zahl, zurück zu 2
4. ende (da hier eingabe == zahl gilt)
 
Überleg Dir mal, ohne Code, was Du eigentlich willst und versuche, das in einen Algorithmus und anschließend in Code zu übersetzen.
Ok also ich habe jetzt eine etwas anderen Ansatz:
Code:
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");
    }
   
    }
   
 
 
  }
 }
 
Erstmal Dein Code nochmal schöner formatiert:
Java:
  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");
     }   
  }
 
Java:
  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.
 
Zuletzt bearbeitet:
an der Stelle gilt die Schleifenbedingung nicht mehr
Das Stimmt! Da hatte ich mich leider vertan. Der letzte Fall muss nicht in die Schleife bzw. muss garnicht berücksichtigt werden! Sorry!
Ich darf es nicht "Eingabe" nennen so wie vorher, aber wenn ich es anders benenne ist es ja nicht mehr definiert
Wahrscheinllich weil du versucht hast die Variable mehrfach zu initialisieren. Eine Variable kann immer nur einmal initialisiert werden, aber mehrfach definiert werden
String str; //initialisieren
str = "halllo" //definieren
str = "nochmal hallo" //definieren
 
A

Anzeige




Vielleicht hilft dir das hier weiter: (klicke hier)
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben