Hilfe zur Lösung einer Aufgabe

  • Hallo!

    Ich bin ein ziemlicher Anfänger in Java und wollte euch bitten mir beim lösen eines Java - Programms zu helfen.

    Die Angabe schaut folgendermassen aus:

    Programmablauf:
    1) Begrüßungstext: "Willkommen beim Zahlenraten zwischen 1 und 100."
    2) "Geben Sie bitte eine Zahl ein: "
    3) Benutzerin gibt die Zahl über die Tastatur ein.
    4) Antwort des Pogramms: "Zahl ist kleiner", "Zahl ist größer" oder "Bravo, Zahl errraten!"
    5) Das geht so lange, bis der Benutzer die Zahl erraten hat.
    6) Am Ende wird die Anzahl der Versuche ausgegeben und das Spiel ist aus.

    Wenn das Programm ausgeführt wird, sieht das dann in der Minimalvariante ungefähr so aus.

    [Blockierte Grafik: http://www.lernfreude.org/file.php/9/Bilder/zahlenraten_ausgabe.jpg]

  • Wir, Studenten, helfen anderen nicht, ihre Hausafgaben zu loesen.
    Wir koennen aber Hinweise geben.
    Poste zumindest ein Teil deines Codes, damit wir wissen dass du ueberhaupt versucht hast es zu loesen.

  • http://www.javabuch.de

    Schreiben kannst du mit:
    System.out.println("lalala");

    Zum Lesen solltest du dir das Kapitel über Streams aus dem Buch reinziehen. Ist wirkliche in gutes Buch. Wenn du auf Streams klickst, wirst du nach paar Minuten ein Beispiel gefunden haben, wie das geht. Sind ja nur paar Zeilen Code. Du musst Streams nicht verstehen, um das Programm zu schreiben, aber wenn du Streams im Buch verstehst, bringt dich das weiter.

  • Natürlich hab ich es auch schon Versucht zu lösen und die Grundbegriffe kenne ich bereits nur weiß ich jetz nicht wie es weiter geht.

    Wenn man eine Zahl eingibt kommt je nachdem die Zahl ist zu groß oder zu klein, so wie es gehört.

    Doch nach der ERSTEN Eingabe ist das Programm bereits beendet.
    Also muss ich es schaffen dass es IMMER WEITER geht SOLANGE man die
    Zuffalszahl erraten hat.

    Theoretisch dachte ich mir muss dass einfach mit dem Vergleich Operator == gehen ( also if eingabe == zufallszahl ) doch es beendet trotzdem nach der ersten Zahl.

    Aber ich zeig euch mal was ich bereits gemacht habe :


    Danke für eure Antworten!

  • Du brauchst dafuer eine while-Schleife.

  • Achso, du benötigst eine Schleife.
    ZB: while, for,...

    Code
    int zaehler=0;
    while(zaehler<10){
      // Benutzer gibt Zahl ein...
      // Zahl wird verglichen
      // Ausgabe, ob erraten, kleiner, größer
      // wenn erraten, zaehler=10
      // zaehler++;
    }
    // Ausgabe, dass schon zu oft versucht oder so


    Das Beispiel würde zB den Code in der Schleife solange ausführen, wie zaehler<10 zutrifft. Da man von 0 bis 10 zählt, hat man 10 Versuche, dann Abbruch. Errät man, setzt man halt gleich zaehler auf 10 und ist draußen. Du kannst dann noch ein boolean oder so machen, ob man erraten hat und je nachdem nach der Schleife Erfolgs-/oder andere Meldung ausgeben. Ist nur so ungefähr beschrieben, halt' dich nicht daran fest, nur so grundsätzlich zu Schleifen... Findest sich was, wenn du while, for,... nachschlägst.

  • Danke!! Es funzt!!!
    Danke für die schnelle Antwort!!!

    gelbasack: Ich will es aber so machen dass es nicht nach 10 mal raten aufhört sondern das es zählt wie oft man versucht hat und dann ausgibt wie oft man gebruacht hat WENN man die Zahl erraten hat.

    styts:
    Selbe Frage,wie macht man das wenn er zählen soll wie oft man eingegeben hat und das er das dann bei erraten der Zahl ausgibt??

    Aber sonst funzt es super!

  • Dann könntest du die Zufallszahl und die geratene in eine Variable speichern...
    die Geratene setzt am Anfang auf -1 zB, dann im while vergleichst du nicht, ob der Zähler kleiner 10 ist, sondern ob geratene Zahl und Zufallszahl ungleich sind. Die Zählervariable setzt am Anfang auf 0 und bei jedem Schleifendurchgang 1 hoch. Klar?

  • Hää? Ich hab doch Probleme anscheinend ändert sich die Zahl ständig

    z.B.:

    4
    die zahl ist zu klein

    5
    die zahl ist zu klein

    6
    die zahl ist zu groß

    7 die zahl ist zu groß


    komisch ,so sieht das Programm im moment aus:

  • Ok nun habe ich
    eingabe = einleser.nextInt();
    aus der while-Schleife gatn und nach
    Scanner einleser = new Scanner(System.in);

    reingetan also so:

    Aber nun ist es so:

    Ich gebe eine beliebige Zahl ein

    Danach kommmt untschiedlich oft hintereinander OHNE was zu machen:

    Die Zahl ist zu klein
    Die Zahl ist zu groß
    .
    .
    .
    .


    Und irgendwann kommt dann sie haben die Zahl erraten und 1 Versuch dafür gebraucht.

  • Hat sich erledigt habs geschafft!!!

    Nur das mit dem Zähler funktioniert noch nicht ich hab eine x variable nach der while gemacht und nach jedem rat versucht erhöht sie sich aber es geht trttzdem nicht:


    ES GEHT NUN ALLES!!!

    HAT SICH ERLEDIT!!

    Vielen Dank nochmals für die Hilfe!!!!!!!

    aber warum bei der while schleife der befehl true????

    while(true) {

    ......
    }

  • Ich hab Java leider nicht so wirklich intus, weiß also nicht ob das mit dem (e=x()) == y funktioniert. Falls nicht probiers mit
    do {
    eingabe = input;
    Vergleiche;
    } while (eingabe != zufall)

    -------------------------------
    "... wo ein Wille ist, ist auch ein oder!"

  • Jo danke klappt alles nur warum while(true) ??

    mit meiner logik müsste es while (eingabe != zufallszahl) lauten?!

    Edit : Ich merke grad das meine Methode eiugentlich auch möglich ist aber warum ist while(true) auch möglich?

  • @deine methode:
    die zahl wird ja erst in der schleife eingelesen, das heißt du kannst am anfang, wenn noch keine zahl da ist, eigentlich keine überprüfung machen. da du aber eingabe mit 0 initialisierst und der wertebereich zwischen 1 und 100 liegt, ist die bedingung am anfang immer falsch und es funktionert auch.

    while(true) ist eine endlosschleife, die solange lauft bis ein break auftritt.

    man könnte das ganze auch mit einer do{ ... } while( bedingung ); schleife lösen

  • Aja bei meiner Methode braucht man ja dann garkein brake; zum Schluss.

    Ok danke vielmals für eure Hilfe welche Ausbildung macht ihr den gerade oder habt ihr hinter euch das ihr euch so gut auskennt.

    Also ich mache gerade die Richtung Informationstechnologie an einer höheren technischen Lehranstalt.

  • Zitat

    Nur das mit dem Zähler funktioniert noch nicht ich hab eine x variable nach der while gemacht und nach jedem rat versucht erhöht sie sich aber es geht trttzdem nicht:


    Das liegt daran, dass du
    int x = 0;
    in der Schleife drinnen stehen hast.
    Im Augenblick legst du so in jedem Durchlauf die Variable x neu an und initialisiert sie jedesmal neu mit 0.
    Wenn du das vor die Schleife stellst und in der Schleife nur noch x++ sagst funktionierts.

    lg

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!