Advertisement
Guest User

Wettlauf

a guest
Nov 12th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.44 KB | None | 0 0
  1. /**
  2.  * Der Wettlauf unterteilt sich in den Start, das eigentliche Rennen und die Auswertung. Zu Beginn gehen die Läufer an den Start,
  3.  * d. h. den angetretenen Läufern wird eine Bahn zugewiesen. Danach findet das eigentliche Rennen statt, bei dem den Startern eine
  4.  * Zufallszahl als Zeit zugewiesen wird. Anschließend erfolgt die Auswertung.
  5.  *
  6.  */
  7. public class Wettlauf
  8. {
  9.     private Laeufer[] laeuferfeld;
  10.     private int anzahlBahnen;
  11.     private int anzahlLaeufer;
  12.  
  13.     /**
  14.      * Konstruktor für Objekte der Klasse Wettlauf
  15.      * @param pAnzahlBahnen Der Integer-Wert gibt an, wie viele Bahnen genutzt werden sollen.
  16.      */
  17.     public Wettlauf(int pAnzahlBahnen)
  18.     {
  19.         laeuferfeld = new Laeufer[pAnzahlBahnen];
  20.         anzahlBahnen = pAnzahlBahnen;
  21.         anzahlLaeufer = 0;
  22.  
  23.     }
  24.  
  25.     /** Es gilt nicht die Array-Indizierung. Die Bahnen beginnen mit der Nummer 1
  26.      * @param pBahn Nummer der Laufbahn(int), bei der überprüft wird, ob sich ein Läufer dort befindet.
  27.      * @return true oder false, Überprüfung, ob die Bahn belegt ist oder nicht.
  28.      */
  29.     public boolean bahnBelegt(int pBahn) {
  30.         return laeuferfeld[pBahn-1]!=null;
  31.     }
  32.  
  33.     /** Die erste Bahn wird mit einer 1 angegeben, nicht mit 0.
  34.      * Die Läufer gehen an den Start.
  35.      * @param pBahn Auf welcher Bahn (int) der Läufer an den Start geht.
  36.      * @param pLaeufer Welches Objekt vom Typ Laeufer an den Start geht.
  37.      */            
  38.     public void anDenStart(int pBahn, Laeufer pLaeufer){
  39.         if (laeuferfeld[pBahn-1]==null && pBahn <= anzahlBahnen) {
  40.             laeuferfeld[pBahn-1] = pLaeufer;
  41.             anzahlLaeufer++;
  42.         }
  43.  
  44.     }
  45.  
  46.     /** Generierung einer Zufallszahl.
  47.      * Diese wird (optional) anschließend auf 2 Stellen hinter dem Komma gerundet.
  48.      * @return ergebnis, Rückgabe einer Dezimalzahl mit zwei Nachkommastellen.
  49.      */
  50.     public double zeitMessen()
  51.     {
  52.         double ergebnis;
  53.         double zufallszahl = Math.random()*10+12;
  54.         ergebnis = zufallszahl;
  55.  
  56.         ergebnis = (int)(ergebnis*100+0.5)/100.0;
  57.         return ergebnis;
  58.     }
  59.  
  60.     /** Implememtierung des eigentlichen Rennens. Jedem Läufer wird dabei eine Zufallszahl zugewiesen.
  61.      * Ist nur ein Läufer angetreten, findet das Rennen nicht statt.
  62.      */
  63.     public void rennenLaufen() {
  64.         if (anzahlLaeufer>1) {
  65.             for (int i=0; i<laeuferfeld.length;i++) {
  66.                 if (laeuferfeld[i] != null) {
  67.                     laeuferfeld[i].setZeit(zeitMessen());
  68.                 }
  69.             }
  70.         }
  71.         else {
  72.             System.out.println("Mindestanzahl von 2 Läufern nicht erreicht.");
  73.         }
  74.     }
  75.  
  76.     /** Auswertung entsprechend der Anforderungen
  77.      *
  78.      */
  79.     public void auswertung() {
  80.         double schnellsteZeit = laeuferfeld[0].getZeit();
  81.         double langsamsteZeit = laeuferfeld[0].getZeit();
  82.         double durchschnittszeit = 0;
  83.         double summe = 0;
  84.         int posSchnellster = 0;
  85.         int posZweitschnellster = 0;
  86.         int posLangsamster = 0 ;
  87.  
  88.         for(int i=1;i<laeuferfeld.length;i++) {
  89.             if (laeuferfeld[i] != null) {
  90.                 if (laeuferfeld[i].getZeit()<schnellsteZeit) {
  91.                     schnellsteZeit=laeuferfeld[i].getZeit();
  92.                     posZweitschnellster = posSchnellster;
  93.                     posSchnellster = i;                    
  94.                 }
  95.                 if (laeuferfeld[i].getZeit()>langsamsteZeit) {
  96.                     langsamsteZeit = laeuferfeld[i].getZeit();
  97.                     posLangsamster = i;
  98.                 }
  99.                 summe = summe + laeuferfeld[i].getZeit();
  100.             } // if-Abfrage Bahn belegt
  101.         }
  102.  
  103.         System.out.println("Der Sieger ist: " + laeuferfeld[posSchnellster].getName() + " mit einer Zeit von " + laeuferfeld[posSchnellster].getZeit() + ".");
  104.         System.out.println("Den 2. Platz belegt: " + laeuferfeld[posZweitschnellster].getName() + " mit einer Zeit von " + laeuferfeld[posZweitschnellster].getZeit() + ".");
  105.         System.out.println("Der Langsamste ist: " + laeuferfeld[posLangsamster].getName() + " mit einer Zeit von " + laeuferfeld[posLangsamster].getZeit() + ". ");
  106.         laeuferfeld[posSchnellster].setQuali(true);
  107.         laeuferfeld[posZweitschnellster].setQuali(true);
  108.         System.out.println();
  109.         System.out.println("Gesamtübersicht");
  110.         for(int i=0;i<laeuferfeld.length;i++) {
  111.             if (laeuferfeld[i] != null) {
  112.                 System.out.println(" Bahn " + (i+1) +": " + "Name: " + laeuferfeld[i].getName() + "\t Zeit: " + laeuferfeld[i].getZeit() + " Sek. \t Qualifikation: " + laeuferfeld[i].getQuali());
  113.             }
  114.         }
  115.     }
  116. }
  117.  
  118.  
  119.  
  120.  
  121. public class Laeufer
  122. {
  123.     private String name;
  124.     private double zeit;
  125.     private boolean quali;
  126.  
  127.     /**
  128.      * Konstruktor für Objekte der Klasse Laeufer
  129.      * @param String pName - Beim Erzeugen eines Läufers wird der Name als Parmeter übergeben.
  130.      */
  131.     public Laeufer(String pName)
  132.     {
  133.         name = pName;
  134.         zeit = 0;
  135.         quali = false;
  136.     }
  137.  
  138.     // Getter und Setter
  139.     public double getZeit() {
  140.         return zeit;
  141.     }
  142.  
  143.     public void setZeit(double pZeit) {
  144.         zeit = pZeit;
  145.     }
  146.  
  147.     public String getName() {
  148.         return name;
  149.     }
  150.  
  151.     public void setQuali(boolean pQuali) {
  152.         quali = pQuali;
  153.     }
  154.  
  155.     public boolean getQuali() {
  156.         return quali;
  157.     }
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement