1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Hilfe zur Lösung einer Aufgabe

    • Frage
  • MaTi
  • 7. Dezember 2005 um 20:36
  • Unerledigt
  • MaTi
    3
    MaTi
    Mitglied
    Punkte
    45
    Beiträge
    8
    • 7. Dezember 2005 um 20:36
    • #1

    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.

  • styts
    4
    styts
    Mitglied
    Punkte
    110
    Beiträge
    19
    • 7. Dezember 2005 um 21:27
    • #2

    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.

  • gelbasack
    25
    gelbasack
    Mitglied
    Reaktionen
    90
    Punkte
    6.525
    Beiträge
    1.241
    • 7. Dezember 2005 um 21:58
    • #3

    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.

  • MaTi
    3
    MaTi
    Mitglied
    Punkte
    45
    Beiträge
    8
    • 8. Dezember 2005 um 15:32
    • #4

    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 :

    Java
    import java.util.*;
    
    
    class Freitag0212 {
    
    
      public static void main (String [] args ) {
    
    
      int eingabe = 0;
      System.out.println("Herzlich Willkommen!\n\n");
      System.out.println("In diesem Programm geht es darum die Zufallszahl zu erraten,\ndie in dem Zahlenbereich von 1 bis 100 liegt.\n");
      System.out.println("\n\nBitte geben sie die erste Zahl ein\n");
      Random zufall = new Random();
      Scanner einleser = new Scanner(System.in);
      eingabe = einleser.nextInt();
      int zufallszahl = 0;
    
    
    
    
        zufallszahl = zufall.nextInt(100);
       if (eingabe < zufallszahl) {
        System.out.println("\nDie angegebene Zahl ist zu klein");
    
    
    
    
       }
        if (eingabe > zufallszahl) {
        System.out.println("\nDie angegebene Zahl ist zu groß");
        }
        if (eingabe == zufallszahl) {
          System.out.println("Sie haben die Zahl erraten!");
        }
      }
    }
    Alles anzeigen


    Danke für eure Antworten!

  • styts
    4
    styts
    Mitglied
    Punkte
    110
    Beiträge
    19
    • 8. Dezember 2005 um 15:38
    • #5

    Du brauchst dafuer eine while-Schleife.

    PHP
    while(true){
       eingabe = einleser.nextInt();
    
    
       //<
       //>
       if (eingabe == zufallszahl) {
          System.out.println("Sie haben die Zahl erraten!");
          break; //beendet die Schleife
        }
    }
    Alles anzeigen
  • gelbasack
    25
    gelbasack
    Mitglied
    Reaktionen
    90
    Punkte
    6.525
    Beiträge
    1.241
    • 8. Dezember 2005 um 15:44
    • #6

    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.

  • MaTi
    3
    MaTi
    Mitglied
    Punkte
    45
    Beiträge
    8
    • 8. Dezember 2005 um 15:52
    • #7

    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!

  • gelbasack
    25
    gelbasack
    Mitglied
    Reaktionen
    90
    Punkte
    6.525
    Beiträge
    1.241
    • 8. Dezember 2005 um 15:58
    • #8

    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?

  • MaTi
    3
    MaTi
    Mitglied
    Punkte
    45
    Beiträge
    8
    • 8. Dezember 2005 um 15:59
    • #9

    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:

    Java
    import java.util.*;
    
    
    class zahlen_erraten {
    
    
      public static void main (String [] args ) {
    
    
      int eingabe = 0;
      System.out.println("Herzlich Willkommen!\n\n");
      System.out.println("In diesem Programm geht es darum die Zufallszahl zu erraten,\ndie in dem Zahlenbereich von 1 bis 100 liegt.\n");
      System.out.println("\n\nBitte geben sie die erste Zahl ein\n");
      Random zufall = new Random();
      Scanner einleser = new Scanner(System.in);
      int zufallszahl = 0;
    
    
        while(true){
        zufallszahl = zufall.nextInt(100);
        eingabe = einleser.nextInt();
         if (eingabe < zufallszahl) {
        System.out.println("\nDie angegebene Zahl ist zu klein\n");
    
    
    
    
        }
        if (eingabe > zufallszahl) {
        System.out.println("\nDie angegebene Zahl ist zu gross\n");
        }
        if (eingabe == zufallszahl) {
          System.out.println("\nSie haben die Zahl erraten!\n");
          break;
        }
       }
      }
    }
    Alles anzeigen
  • Trux
    12
    Trux
    Mitglied
    Reaktionen
    26
    Punkte
    1.396
    Beiträge
    274
    • 8. Dezember 2005 um 16:08
    • #10

    du berechnest ja auch die zufallszahl mit jedem schleifendurchlauf neu. gib die berechnung einfach vor die while-schleife.

  • MaTi
    3
    MaTi
    Mitglied
    Punkte
    45
    Beiträge
    8
    • 8. Dezember 2005 um 16:16
    • #11

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

    reingetan also so:

    Java
    import java.util.*;
    
    
    class zahlen_erraten {
    
    
      public static void main (String [] args ) {
    
    
      int eingabe = 0;
      System.out.println("Herzlich Willkommen!\n\n");
      System.out.println("In diesem Programm geht es darum die Zufallszahl zu erraten,\ndie in dem Zahlenbereich von 1 bis 100 liegt.\n");
      System.out.println("\n\nBitte geben sie die erste Zahl ein\n");
      Random zufall = new Random();
      Scanner einleser = new Scanner(System.in);
      eingabe = einleser.nextInt();
    
    
      int zufallszahl = 0;
        while(true){
        int x = 0;
        zufallszahl = zufall.nextInt(100);
    ......etc.......
    Alles anzeigen

    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.

  • MaTi
    3
    MaTi
    Mitglied
    Punkte
    45
    Beiträge
    8
    • 8. Dezember 2005 um 16:19
    • #12

    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:

    Java
    import java.util.*;
    
    
    class zahlen_erraten {
    
    
      public static void main (String [] args ) {
    
    
      int eingabe = 0;
      System.out.println("Herzlich Willkommen!\n\n");
      System.out.println("In diesem Programm geht es darum die Zufallszahl zu erraten,\ndie in dem Zahlenbereich von 1 bis 100 liegt.\n");
      System.out.println("\n\nBitte geben sie die erste Zahl ein\n");
      Random zufall = new Random();
      Scanner einleser = new Scanner(System.in);
    
    
      int zufallszahl = 0;
      zufallszahl = zufall.nextInt(100);
        while(true){
        int x = 0;
          eingabe = einleser.nextInt();
    
    
         if (eingabe < zufallszahl) {
        System.out.println("\nDie angegebene Zahl ist zu klein\n");
    
    
    
    
        }
        if (eingabe > zufallszahl) {
        System.out.println("\nDie angegebene Zahl ist zu gross\n");
        }
        x++;
        if (eingabe == zufallszahl) {
          System.out.println("\nSie haben die Zahl erraten!\n");
          System.out.println(" Sie haben " + x + " Versuche dafuer gebraucht.");
          break;
        }
       }
      }
    }
    Alles anzeigen


    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) {

    ......
    }

  • gelbasack
    25
    gelbasack
    Mitglied
    Reaktionen
    90
    Punkte
    6.525
    Beiträge
    1.241
    • 8. Dezember 2005 um 16:21
    • #13

    Edit: Knapp zu langsam :winking_face:

  • ChristofNeutron
    4
    ChristofNeutron
    Mitglied
    Punkte
    110
    Beiträge
    17
    • 8. Dezember 2005 um 16:22
    • #14
    Code
    zufallszahl = zufall.nextInt(100);
        while((eingabe = einleser.nextInt()) != zufallszahl){
         if (eingabe < zufallszahl) {
        System.out.println("\nDie angegebene Zahl ist zu klein\n");
    
    
    
    
        }
        if (eingabe > zufallszahl) {
        System.out.println("\nDie angegebene Zahl ist zu gross\n");
        }
       }
       System.out.println("\nSie haben die Zahl erraten!\n");
      }
    }
    Alles anzeigen

    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!"

  • MaTi
    3
    MaTi
    Mitglied
    Punkte
    45
    Beiträge
    8
    • 8. Dezember 2005 um 16:24
    • #15

    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?

  • Trux
    12
    Trux
    Mitglied
    Reaktionen
    26
    Punkte
    1.396
    Beiträge
    274
    • 8. Dezember 2005 um 16:34
    • #16

    @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

  • MaTi
    3
    MaTi
    Mitglied
    Punkte
    45
    Beiträge
    8
    • 8. Dezember 2005 um 16:39
    • #17

    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.

  • tschurlo
    8
    tschurlo
    Mitglied
    Punkte
    590
    Beiträge
    95
    • 8. Dezember 2005 um 18:08
    • #18
    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

    M-Th's Homepage: http://www.tschurlo.at

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung