Übung 5

Java Übungsforum
Verfügbare Informationen zu "Übung 5"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: maprie - sulumar - Sara
  • Forum: Java Übungsforum
  • aus dem Unterforum: Mögliche Lösungen
  • Antworten: 3
  • Forum gestartet am: Montag 27.11.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Übung 5
  • Letzte Antwort: vor 16 Jahren, 3 Monaten, 29 Tagen, 4 Stunden, 50 Minuten
  • Alle Beiträge und Antworten zu "Übung 5"

    Re: Übung 5

    maprie - 27.11.2006, 19:07

    Übung 5
    So, hier sind die Quelltexte der 5. Übung. (Als Denkanstoß falls ihr nicht weiterkommt :))

    Code: // WildeTiere.java
    // Das WildeTiere-Beispiel aus der Vorlesung.
    // Alle Klasssen fuer das Programm sind in einer einzigen Datei enthalten.
    //

    // Die Klasse WildeTiereStarter haben wir umbenannt.
    // Sie heisst jetzt nur noch WildeTiere ohne Starter.
    // Trotzdem startet das Programm noch von hier.
    public class WildeTiere {
       public static void main (String[] args) {
          // Ein Zoo-Objekt erstellen und die Methode losGehts() aufrufen
          Zoo zoo = new Zoo();
          zoo.losGehts();
       }
    }


    // Der Zoo managt die wilden Tiere und reagiert auf die Benutzereingabe.
    class Zoo {

       // Tier-Objekte erzeugen und Benutzereingabe abfragen
       public void losGehts () {
          // Tier-Objekte erzeugen
          Tier[] tiereArray = new Tier[4];
          tiereArray[0] = new Affe ();
          tiereArray[1] = new Loewe ();
          tiereArray[2] = new Baer ();
          tiereArray[3] = new Hase ();

          // Die Instanzvariablen fuer jedes Tier mit sinnvollen Werten initialisieren
          tiereArray[0].setTierart("Affe");
          tiereArray[0].setHerkunftsland("Brasilien");
          tiereArray[0].setAlter(5);
          tiereArray[0].setGeschlecht("maennlich");
          tiereArray[0].setName("Tarzan");
          tiereArray[0].setCya("Auf Wiedersehen!");
          
          tiereArray[1].setTierart("Loewe");
          tiereArray[1].setHerkunftsland("Kenia");
          tiereArray[1].setAlter(13);
          tiereArray[1].setGeschlecht("weiblich");
          tiereArray[1].setName("Lisa");
          tiereArray[1].setCya("Bis bald!");
          
          tiereArray[2].setTierart("Baer");
          tiereArray[2].setHerkunftsland("Polen");
          tiereArray[2].setAlter(20);
          tiereArray[2].setGeschlecht("weiblich");
          tiereArray[2].setName("Susie");
          tiereArray[2].setCya("Tschuess!");
          
          tiereArray[3].setTierart("Hase");
          tiereArray[3].setHerkunftsland("Belgien");
          tiereArray[3].setAlter(3);
          tiereArray[3].setGeschlecht("maennlich");
          tiereArray[3].setName("Hase");
          tiereArray[3].setCya("Wir sehn uns!");
          
          // BenutzerEingabe-Objekt erstellen
          Benutzereingabe eingabe = new Benutzereingabe ();

          // hier speichern wir die Auswahl des Benutzers
          String gewaehltesTier;
          
          System.out.println ("Sie sind im Zoo und laufen herum. Beruehren Sie ein Tier mit Ihrer Tastatur, damit Ihnen dieses Tier etwas ueber sich erzaehlt:");

          // Hey, wer hat gesagt, dass do-while-Schleife keinen Sinn machen?
          do {
             // Eingabe von der Tastatur speichern
             gewaehltesTier = eingabe.getBenutzereingabe("Was beruehren Sie: Affe, Loewe, Baer, Hase oder ENDE?");
             gewaehltesTier = gewaehltesTier.toLowerCase();   // Konvertiert String in reine Kleinschreibung
             
             // Oh nee, schon wieder if-Verzweigungen?
             // Wann bringen die endlich die switch-case-Anweisung in der Vorlesung?
             
             if (gewaehltesTier.equals ("affe")) {
                tiereArray[0].erzaehlWas();
             } else if (gewaehltesTier.equals("loewe")) {
                tiereArray[1].erzaehlWas();
             } else if (gewaehltesTier.equals("baer")) {
                tiereArray[2].erzaehlWas();
             } else if (gewaehltesTier.equals("hase")) {
                tiereArray[3].erzaehlWas();
             }
          } while (!gewaehltesTier.equals("ende"));
          
          for ( Tier viech : tiereArray ) {   // for-each Schleife, die zum guten Schluss die
             viech.verabschieden();      // verabschieden-Funktion jedes einzelnen Tier-Objekts aufruft.
          }
       }
    }


    // Die Superklasse vererbt die gemeinsamen Instanzvariablen und Methoden fuer alle Tiere.
    class Tier {
       // Instanzvariablen
       private String tierart;
       private String herkunftsland;
       private int alter;
       private String geschlecht;
       private String name;
       private String cya;

       // Methoden
       
       // Infos ueber die Tiere ausgeben
       public void erzaehlWas() {
          System.out.println ("Mein Name ist " + name + ".");      
          System.out.println ("Ich bin ein " + tierart + ".");
          System.out.println ("Ich komme aus " + herkunftsland + ".");
          System.out.println ("Mittlerweile bin ich " + alter + " Jahre jung.");
          System.out.println ("Und ich bin " + geschlecht + ".");
          System.out.println ();
       }
       
       // sich am Ende nochmal zu Wort melden
       public void verabschieden() {
          System.out.println(name + ": " + cya);
       }

       // in dieser Uebung machen Tiere noch keine Geraeusche
       public void geraeuschMachen() {
       }
       
       // Getter und Setter
       public void setTierart(String art) {
          tierart = art;
       }

       public String getTierart() {
          return tierart;
       }   
       
       public void setHerkunftsland(String herkunft) {
          herkunftsland = herkunft;
       }
       
       public String getHerkunftsland() {
          return herkunftsland;
       }
       
       public void setAlter(int jahre) {
          alter = jahre;
       }
       
       public int getAlter() {
          return alter;
       }
       
       public void setGeschlecht(String sex) {
          geschlecht = sex;
       }
       
       public String getGeschlecht() {
          return geschlecht;
       }
       
       public void setName(String manNenntMich) {
          name = manNenntMich;
       }
       
       public String getName() {
          return name;
       }
       
       public void setCya(String ciao) {
          cya = ciao;
       }
       
       public String getCya() {
          return cya;
       }
    }


    // diese Klassen erben alle von der Superklasse Tier
    class Affe extends Tier {
    }

    class Loewe extends Tier {
       private String hinweis = "Meine Art ist fast ausgestorben!";
       
       public void erzaehlWas() {   // ruft die erzaehlWas-Funktion der Tiere auf und haengt den Hinweis dran
          super.erzaehlWas();
          System.out.println( hinweis );
          System.out.println();
       }
    }

    class Baer extends Tier {
    }

    class Hase extends Tier {
    }

    Code: // LottoSpiel.java
    // Testet den Hauptcode, verwaltet die Spieler
    //

    import java.util.ArrayList;

    class LottoSpiel {
       public static void main (String[] args) {

          // Objekte erzeugen
          LottoGesellschaft westLotto = new LottoGesellschaft ();
          Benutzereingabe eingabe = new Benutzereingabe ();      // Code-Fertiggericht aus dem Buch
             
          int[] lottoZahlen = new int[6];               // Zwischenspeicher-Array fuer Lottozahlen des Spielers
          
          // Die Benutzer sollen in einer ArrayList gespeichert werden
          ArrayList<LottoTipp> alleTipps = new ArrayList<LottoTipp> ();

          // immer wieder Spieler hinzufuegen, bis "nein" eingegeben wird
          
          boolean zuEnde = false;

          do {
             // neues LottoTipp-Objekt:
             LottoTipp neuerTipp = new LottoTipp();
             
             // Eingabe des Spielernamens:
             String playerName = eingabe.getBenutzereingabe ("\n"+"Bitte Namen eingeben:");
             // Uebergabe des Namens an das Objekt:
             neuerTipp.setName(playerName);
             
             // Hinweis fuer die Spieler ausgeben
             System.out.println ("\n"+"Wir nehmen nur gueltige Zahlen zwischen 1 und 49. Die Westlotto-Gesellschaft.");
                      
             // Lottozahlen eingeben und als int speichern
             for (int zahl = 0; zahl < 6; zahl++) {
                lottoZahlen[zahl] = Integer.parseInt (eingabe.getBenutzereingabe ("Geben Sie Ihre " + (zahl + 1) + ". Zahl ein:"));
             }
             // Uebergabe des Zahlen-Arrays an das Tipp-Objekt:
             neuerTipp.setTipp(lottoZahlen);
             
             // neuen Spieler nur dann hinzufuegen, wenn er einen gueltigen Tipp abgegeben hat
             if ( LottoGesellschaft.pruefeWertebereich( neuerTipp.getTipp() ) ) {
                alleTipps.add( neuerTipp );
             }
             else {
                System.out.println("\n"+"Ungueltiger Tipp, bitte nochmal versuchen.");
             }
             
             // einfache ja / nein Abfrage, ob weitere Spieler aufgenommen werden sollen
             String abfrage = eingabe.getBenutzereingabe("\n"+"weiterer Spieler? (ja/nein)");
             abfrage = abfrage.toLowerCase();   // fange Gross-/Kleinschreibung ab
             
             if ( abfrage.equals("nein") ) {
                zuEnde = true;      // Es geht immer weiter, ausser wenn nein eingegeben wird
             }
             else {
                zuEnde = false;
             }
          } while (zuEnde == false);
          
          // alle Spieler mit ihren Tipps ausgeben
          System.out.println("\n"+"abgegebene Tipps:");
          
          for ( LottoTipp einTipp : alleTipps ) {
             System.out.print( einTipp.getName() + ":\t" );
             
             for ( int neZahl : einTipp.getTipp() ) {
                System.out.print( neZahl + " " );
             }
             System.out.println();
          }
          
          System.out.println();
          
          System.out.print("Folgende Gewinnzahlen wurden gezogen: ");
          westLotto.zieheGewinnzahlen ();               // Gewinnzahlen ziehen
          for (int zahl : westLotto.getGewinnzahlen ()) {         // Gewinnzahlen ausgeben
             System.out.print (zahl + " ");
          }
          System.out.println ("\n");
       }
    }

    Code: // LottoTipp.java
    // Speichert einen Tipp und den Namen des Spielers
    //

    import java.util.Arrays;   // Arrayinhalt sortieren

    public class LottoTipp {

       // Array fuer Lottozahlen
       private int[] tipp = new int[6];
       private String name;

       // Setter: die Zahlen muessen kopiert werden
       public void setTipp (int[] lottoZahlen) {
          for (int zahl = 0; zahl < 6; zahl++) {
             tipp[zahl] = lottoZahlen[zahl];
          }
          // Zahlen sortieren
          Arrays.sort(tipp);
       }

       // Getter
       public int[] getTipp () {
          return tipp;
       }
       
       public void setName (String spieler) {
          name = spieler;
       }
       
       public String getName () {
          return name;
       }
    }

    Code: // LottoGesellschaft.java
    // Gewinnzahlen ziehen, Anzahl der Treffer in einem Tipp pruefen
    //

    import java.util.Arrays;

    public class LottoGesellschaft {

       // Array fuer Gewinnzahlen
       private int[] gewinnzahlen = new int[6];
       
       // Getter
       public int[] getGewinnzahlen () {
          return gewinnzahlen;
       }
       
       // Setter: 6 zufaellige Zahlen ziehen und sortieren lassen (zieht auch noch doppelte Zahlen).
       public void zieheGewinnzahlen () {
          for (int zahl = 0; zahl < 6; zahl++) {
             gewinnzahlen[zahl] = (int) (Math.random() * 49) + 1;
          }
          // Zahlen sortieren
          Arrays.sort(gewinnzahlen);
       }
       
       // Fuegen Sie eine Methode hinzu, die den Wertebereich der Zahlen prueft und einen boolschen Wert zurueckliefert.
       public static boolean pruefeWertebereich(int[] zahlen) {
          for ( int testing : zahlen ) {
             if ( testing < 1 || testing > 49 ) {
                return false;
             }
          }
          return true;
       }
    }

    Die "\n"-Dinger in LottoSpiel sind Zeilenumbrüche, die machen die Ausgabe lesbarer.



    Re: Übung 5

    sulumar - 27.11.2006, 19:28


    Danke dir



    Re: Übung 5

    Sara - 27.11.2006, 20:23


    Das sieht gut aus, aber JavaSpiel versteh ich net so wirklich...
    Das ist auch das einzige, was bei mir nicht läuft bzw wo ich net mal 100pro weiß, was ich da rein schreiben kann.

    Es wäre super, wenn das hier mal jemand erklären könnte :D



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Java Übungsforum

    Übung 8 - gepostet von Sara am Samstag 13.01.2007



    Ähnliche Beiträge wie "Übung 5"

    Übung gasaustritt im feuerwehrhaus - jamal-jefferson (Donnerstag 06.04.2006)
    5.übung salze - Chris (Sonntag 16.12.2007)
    Stahlbau 2. Übung - cecily (Sonntag 05.11.2006)
    Übung macht den Meister - donna (Sonntag 29.04.2007)
    Bleib-Übung - rockyhund (Sonntag 12.08.2007)
    Übung Messtechnik - systemfehler (Donnerstag 27.10.2005)
    Übung 1 - jay0ne (Freitag 05.10.2007)
    Übung 8 Aufgabe 3 - dave (Donnerstag 14.12.2006)
    Platz der Übung - kiamara (Dienstag 24.07.2007)
    Übung 5 - christoph (Donnerstag 11.10.2007)