Lotto spielen (Kapitel 6, Aufgabe 1)

Code- und Programmbeispiele

Lotto spielen (Kapitel 6, Aufgabe 1)

Postby kottmair » Mon Sep 23, 2013 1:13 pm

Die Aufgabe aus Kapitel 6 des Buchs "Java für Einsteiger" lautet:

Mit einem kleinen Java-Programm soll Lotto gespielt werden können.
Die getippten sechs Zahlen werden als Aufrufparameter übergeben und vom Programm in Integer-Werte umgesetzt.
Falls nicht sechs unterschiedliche Zahlen im Bereich von 1 bis 49 angegeben wurden, soll eine Fehlermeldung den Anwender darauf hinweisen und das Programm abgebrochen werden.
Anschließend werden sechs verschiedene Zufallszahlen im Bereich von 1 bis 49 erzeugt und mit den getippten Zahlen verglichen.
Die Ausgabe des Programms zeigt die gezogenen Zahlen in sortierter Reihenfolge sowie die Anzahl der richtig getippten Zahlen.


Hier der Code der Musterlösung:
Code: Select all
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class Lotto {
  public static void main(String[] args) {
    if (args.length != 6) {
      System.err.println("Bitte 6 Zahlen angeben!");
      System.exit(1);
    }
       
    Set<Integer> getippteZahlen = new TreeSet<>();
    for (int i = 0; i < 6; i++) {
      try {
        int zahl = Integer.parseInt(args[i]);
        if (zahl < 1 || zahl > 49) {
          throw new NumberFormatException();
        }
        if (getippteZahlen.contains(zahl)) {
          System.err.println("Bitte keine Zahl doppelt tippen!");
          System.exit(3);
        }
        getippteZahlen.add(zahl);
      } catch (NumberFormatException e) {
        System.err.println("Bitte nur Zahlen zwischen 1 und 49 angeben!");
        System.exit(2);
      }
    }
       
    Set<Integer> gezogeneZahlen = new TreeSet<>();
    Random random = new Random();
    // In einem Set gibt es keine doppelten Einträge, daher fügen wir solange
    // neue Zahlen hinzu, bis sechs unterschiedliche Zahlen enthalten sind
    while (gezogeneZahlen.size() < 6) {
      // Erzeugen einer Zahl zwischen 1 und 49
      int zahl = random.nextInt(49) + 1;
      gezogeneZahlen.add(zahl);
    }
       
    int richtige = 0;
    System.out.print("Gezogene Zahlen: ");
    for (Integer zahl : gezogeneZahlen) {
      System.out.print(zahl + " ");
      if (getippteZahlen.contains(zahl)) {
        richtige++;
      }
    }
    System.out.println();
    System.out.println("Sie haben " + richtige + " Richtige");
  }
}
kottmair
Site Admin
 
Posts: 8
Joined: Fri Sep 14, 2012 8:50 am

Return to Beispielprogramme

Who is online

Users browsing this forum: No registered users and 0 guests

cron