Erste Schritte Anfänger braucht Denkanstoß für Schulprojekt

MA

Mitglied
Hallo liebe Wissende,

nach 6 Vorlesungen Java sollen wir nun folgende Aufgabe lösen, allerdings fehlt mir der Ansatz:

Übungsaufgabe 2: Ligatabelle
Es soll das Modell der Tabelle einer Sportliga erstellt werden.
1. Eine Ligatabelle hält ein Datenfeld "Verein[] tabelle". Außerdem hält eine Ligatabelle ein Datenfeld "int registrierte", das die Anzahl bereits registrierter Vereine hält. Die Ligatabelle besteht aus einer festen Anzahl von Vereinen (20). Die Anzahl der Plätze in der Liga soll im Konstruktor übergeben werden. (2 Punkte)

2. Entwickeln Sie eine Methode "int gibAnzahlPlaetze()", die die Anzahl der Plätze in der Liga zurückgibt. (1 Punkt)

Das habe ich soweit. Ich brauche ein Array namens tabelle, welches ich mit 20 Objekten der Klasse "Verein" fülle, richtig?

Ich habe dafür also zwei Klassen angelegt. Einmal die Klasse Ligatabelle, wo die Methoden ausgeführt werden und eine Klasse Verein, in denen die Variablen definiert sind.

3. Entwickeln Sie eine Methode "void registriere(Verein verein)", die einen Verein in der Ligatabelle registriert. Beachten Sie dabei, dass nicht mehr Vereine registriert werden können, als in der Liga spielen. Wird versucht, einen weiteren Verein zu registrieren, wird diese Registrierung verworfen und statt der Registrierung eine Meldung für den Benutzer ausgegeben, dass die Liga bereits „voll“ ist. (5 Punkte)

Hmmm... da gehts schon los. Ich weiß nicht, wie die Methode "void registriere(Verein verein)" gemeint ist. Worauf beziehen sich die Angaben? Bezieht sich "Verein" wieder auf meine Klasse? Ist "verein" nur eine Übergabevariable oder bereits der Name der Variablen meiner Klasse? Ich schätze, ich muss ein neues Objekt der Klasse Verein erzeugen und das in das Array tabelle schreiben, oder?

4. Entwickeln Sie eine Methode gibRegistrierte(), die die Anzahl bereits registrierter Vereine
zurückgibt. (2 Punkte)

5. Die Vereine halten in Datenfeldern die Zahl der Spiele, die sie gewonnen haben und die Zahl der Spiele, in denen Sie ein Unentschieden erreicht haben. (2 Punkte)

6. Entwickeln Sie eine verändernde Methode void gewonnen(), die die Anzahl der Siege erhöht und eine verändernde Methode void unentschieden(), die die Anzahl der Unentschieden-Ergebnisse erhöht.
(3 Punkte)

7. Aus den vom Verein gehaltenen Daten sollen die Punkte des Vereins in der Tabelle berechnet werden. Dabei gilt:
- Ein Sieg gibt 3 Punkte,
- Ein Unentschieden gibt 1 Punkt.
Entwickeln Sie für die Klasse Verein eine Methode int gibPunkte(), die die Punkte eines Vereins berechnet und zurückgibt. (3 Punkte)

8. Außerdem halten die Vereine ihren Namen in einem Datenfeld. Der Name soll über den Konstruktor des Objekts Verein übergeben werden. (1 Punkt)

9. Entwickeln Sie eine Methode void gibVereine(), die alle in der Liga registrierten Vereine mit ihrem Namen, ihren Siegen und ihren Remis (Unentschieden) ausgibt. (2 Punkte)
Zusatzaufgabe: Entwickeln Sie eine Methode void gibTabelleAus(), die eine Tabelle ausgibt, in der die Vereine absteigend nach Ihren Punkten sortiert sind. Dazu eignet sich das Interface Compara tor aus der Java-Standardbibliothek. (4 Punkte)

Punkte: Inklusive der Zusatzaufgabe sind 25 Punkte zu erreichen.

Ist es im Grunde richtig, dass ich ein Array mit Objekten der Klasse anlegen muss (die Vereine), welche verschiedene Werte wie "gewonnen", "Name", etc. beinhalten?

Hier mein simpler Anfang:

Java:
public class Verein
{
    public String name;
    public int gewonnen;
    private int unentschieden;

    /**
     * K o n s t r u k t o r
     */
    public Verein()
    {
        gewonnen = 0;
        unentschieden = 0;
    }
}

Java:
public class Ligatabelle
{
    private int anzahlVereine;
    private Verein[] tabelle; // Array deklarieren =>  Array-Typ[] Array-Name
    private int registrierte; // enthält Anzahl der registrierten Vereine

    /**
     * K o n s t r u k t o r
     */
    public Ligatabelle()
    {
        anzahlVereine = 20;
        tabelle = new Verein[anzahlVereine]; // Array-Objekt mit [n] Elementen erstellen
    }

    public void gibAnzahlPlaetze()
    {
        System.out.println("Es gibt maximal "+anzahlVereine+" Plätze zu vergeben.");
    }
    
    public void registriere(Verein verein)
    {
        // System.out.println(verein);    
    }
    
    public void test()
    {
        tabelle[2] = new Verein();
        tabelle[2].name = "Jonny";
        // String[] tabelle = { "jalapeno", "anaheim", "serrano", "habanero", "thai" }; // Füllen
        System.out.println(tabelle[2].name);    
    } 
}

Über jede Hilfe freut sich der

Matthias
 

Volvagia

Top Contributor
Das habe ich soweit. Ich brauche ein Array namens tabelle, welches ich mit 20 Objekten der Klasse "Verein" fülle, richtig?
Nein, vom Füllen steht da nichts. Nur ein Array.

Hmmm... da gehts schon los. Ich weiß nicht, wie die Methode "void registriere(Verein verein)" gemeint ist. Worauf beziehen sich die Angaben? Bezieht sich "Verein" wieder auf meine Klasse? Ist "verein" nur eine Übergabevariable oder bereits der Name der Variablen meiner Klasse? Ich schätze, ich muss ein neues Objekt der Klasse Verein erzeugen und das in das Array tabelle schreiben, oder?
Ich denke, du denkst zu kompliziert. Natürlich ist die Variable Verein eine Instanz deiner Verrein. Die Methode bekommt sie und schreibst sie wo hin. Nichts selbst erzeugen. Schau einfach mal nach "Setter".
 
M

Marcinek

Gast
Hallo du musst bei registreireVerein() einen Verein in das Array hinzufügen. Bitte beachte, dass du ein freien Slot (!= null) suchen musst.
 

Guardi

Bekanntes Mitglied
Das sieht im Ansatz doch schon alles ok aus.
Ich vermute allerdings, dass das mit der Liga so gemeint ist:

Es gibt vielleicht einen Pool von Vereinen, aber nicht jeder ist unbedingt in einer Liga.
Aus diesem Pool (bzw. halt Initial-Tabelle) kannst du nun über die Funktion "registrieren" Vereine der Liga hinzufügen.
Natürlich nur maximal 20 Vereine.

Diese Vereine, also die Objekte in der Liga , haben nun counter für:
spiele, gewonnen, unentschieden.

Inwieweit du validieren sollst, dass jede Mannschaft die gleiche Anzahl an Spielen hat weiß ich nicht.
Aber ich vermute mal es gilt sowas wie, es gibt nur einen Spieltag an dem alle Vereine spielen.
 

MA

Mitglied
Hallo und vielen Dank für die Antworten. Setter ist völlig Neuland, sollen wir sicher nicht verwenden.

Ich denke, ich habe einfach noch ganz allgemeine Verständnisfragen zum Array:

Mit tabelle = new Verein[anzahlVereine] habe ich doch ein Array angelegt, das zwar eine bestimmte Anzahl Elemente hat, diese doch aber noch völlig ungefüllt sind, oder?

Mit der Methode registriere(Verein verein) soll dieses Array dann mit den Instanzen der Klasse Verein (=Objekte?) gefüllt werden (eine Instanz bzw. Objekt ist ein Verein)? Und da die Instanz eine eigene Klasse ist, kann jede Instanz weitere Datenfelder (=Variablen) haben, oder? In PHP würde ich von einem mehrdimensionalen Array sprechen.

Was bedeutet die Methode registriere(Verein verein)? Bedeutet das großgeschriebene Verein, dass ich eine Instanz der Klasse Verein hinzufügen möchte? Aber nein, das ist ja Quatsch, das Array heißt ja tabelle. Also bedeutet das große Verein, dass ich irgendwas mit dieser Klasse Verein vorhabe. Aber warum muss ich der Methode das eigentlich mitteilen? Ich könnte den Wert doch auch später für meine Zwecke verwenden... hmm. :oops:

Ist das kleinegeschriebene verein aus der Methode nur der Name der Übergabevariable, welche dann irgendwie zum Inhalt des Arrays wird oder weist es bereits auf ein in der Klasse Verein benötigtes Datenfeld hin?

Kann mir jemand auf die Sprünge helfen?

Danke sagt Matthias
 
M

Marcinek

Gast
Verein ist eine Klasse und das was danach kommt eine Variable

mit tabelle[1] = new Verein() Kannst du an Index=1 einen neuen Verein erzeugen.

Ja, das array ist nach dem initialisieren leer. (Alle Stellen = null).
 

Guardi

Bekanntes Mitglied
Hallo und vielen Dank für die Antworten. Setter ist völlig Neuland, sollen wir sicher nicht verwenden.

Ich weiß ja nicht wie es den anderen hier geht, aber Setter und Getter ist doch wirklich einer der aller ersten Sachen die man lernen/wissen sollte nachdem man sich klar gemacht hat was OOP ist.
Das ist irgendwie die Basis der Basis.
 

MA

Mitglied
Gut,

ich verspreche Besserung. Irgendwie klingen Setter und Getter tatsächlich schon von ihrer Bezeichnung her wichtig. Als Basis der Basis werde ich mir das mal anschauen.

Sooo..., bin sehr glücklich, denn ich konnte mir schon einige Fragen beantworten.

Was bedeutet die Methode registriere(Verein verein)? Bedeutet das großgeschriebene Verein, dass ich eine Instanz der Klasse Verein hinzufügen möchte?

Genau. Allerdings muss die Klasse Verein mindestens eine Instanz haben. Wir benutzen BlueJ, da führt man zunächst die Klasse Ligatabelle aus (new Ligatabelle()) und die Klasse Verein (new Verein()) mehrmals. Bei diesem Prozess muss man jeweils einen Instanznamen vergeben. Führt man dann die Methode registriere(Verein verein) in der Instanz der Ligatabelle aus, muss man einen Instanznamen der Klasse Verein wählen, sonst kommt eine Fehlermeldung.

Da ich in einem anderen Forum las, dass diese Instanznamen lediglich dazu dienen, die graphische Oberfläche von BlueJ herzustellen, kann man diese auch nicht weiter ansprechen. Wie man ohne BlueJ zu Instanzen kommt, ist mir daher noch ein Rätsel, dessen Klärung ich aber gern verschiebe.

Ist das kleinegeschriebene verein aus der Methode nur der Name der Übergabevariable, welche dann irgendwie zum Inhalt des Arrays wird oder weist es bereits auf ein in der Klasse Verein benötigtes Datenfeld hin?

Es ist lediglich der Übergabewert, dieser könnte auch als "bla" bezeichnet sein.


Ok, mein Skript finktioniert nun schon ganz gut. Bei der Schleife teste ich, ob das Feld null ist. Irgendwie empfinde ich das als umständlich. Geht das kürzer?

Java:
public class Ligatabelle
{
    private int anzahlVereine;
    private Verein[] tabelle; // Array deklarieren =>  Array-Typ[] Array-Name
    private int registrierte; // enthält Anzahl der registrierten Vereine

    /**
     * K o n s t r u k t o r
     */
    public Ligatabelle()
    {
        // Anzahl der möglichen Vereine:
        anzahlVereine = 2;
        // Array-Objekt mit [n] Elementen erstellen (alle sind nun "null")
        tabelle = new Verein[anzahlVereine]; 
        registrierte = 0;
    }

    public int gibAnzahlPlaetze()
    {
        return anzahlVereine;
    }
    
    public void registriere(Verein verein)
    {
        // Wenn die Zahl der Registrieten kleiner ist als die der Möglichen, dann...
        if(registrierte < anzahlVereine) {
            // ... fülle das Array tabelle an der nächsten freien Stelle mit dem Verein
            for (int i = 0; i < tabelle.length; i++) {
                if(tabelle[i]==null){
                    // Ist das Feld leer, dann registriere den Verein
                    tabelle[i] = verein;
                    // erhöhe die Zahl der Registrierten um 1
                    registrierte++;
                    // und beende die Schleife
                    break;
                    } 
            }  
        } else {
            // ... ansonsten gib Hinweis aus
            System.out.println("Die Liga ist voll. Es können keine weiteren Eintragungen gemacht werden.");
        }
    }
    
    public int gibRegistrierte()
    {
        return registrierte;
    }
    
    
    
    public void gibVereine()
    {
        // Spaltenköpfe ausgeben
        System.out.println("Gewonnen \t Unentschieden");
        for (int i = 0; i < tabelle.length; i++) {
                if(tabelle[i]!=null){
                    // Ist das Feld nicht leer, dann registriere den Verein
                    System.out.println(tabelle[i].gewonnen+" \t \t "+tabelle[i].unentschieden);
                } else {
                    // ansonsten brich die Schleife ab:
                    break;
                }
        }  
    }
    
    /*
    public void test()
    {
        tabelle[2] = new Verein();
        tabelle[2].name = "Jonny";
        System.out.println(tabelle[2].name);    
    } 
    */
}



Java:
public class Verein
{
    public String name;
    public int gewonnen;
    public int unentschieden;
    public int punkte;
    private int punkteProGewonnen;
    private int punkteProUnentschieden;
    

    /**
     * K o n s t r u k t o r
     */
    public Verein()
    {
        gewonnen = 0;
        unentschieden = 0;
        punkte = 0;
        punkteProGewonnen = 3;
        punkteProUnentschieden = 1;
    }
    
    /**
     * Erhöhe die gewonnenen Spiele um 1
     */
    public void gewonnen()
    {
        gewonnen++;
        punkte = punkte + punkteProGewonnen;
        
    }

    /**
     * Erhöhe die gewonnenen Spiele um 1
     */
    public void unentschieden()
    {
        unentschieden++;
        punkte = punkte + punkteProUnentschieden;
    }
    
    /**
     * Gib die Anzahl der Punkte aus
     */
    public int gibPunkte()
    {
        return punkte;
    }
}

Momentan grüble ich über Aufgabe 8 nach, für die es lediglich einen Punkt gibt:

8. Außerdem halten die Vereine ihren Namen in einem Datenfeld. Der Name soll über den Konstruktor des Objekts Verein übergeben werden. (1 Punkt)

Im Konstruktor der Klasse lege ich die "Startwerte" fest, die jedes Objekt der Klasse erhält. Was aber ist der Konstruktor der Klasse? Wenn ich eine Methode ausführe, die dem Objekt, also der Instanz der Klasse, einen weiteren Wert für "name" zuweist, ist das kein Problem. Da aber bei den anderen Aufgaben explizit angegeben ist, welche Methoden es geben soll, glaube ich eher nicht, dass das die Lösung wäre.

Was ist also der Unterschied zwischen dem Konstruktor der Klasse und dem Konstruktor des Objekts? Wie kann ich dem Konstruktor des Objekts einen Wert zuweisen?

Gruß Matthias
 

Guardi

Bekanntes Mitglied
Uffff...

1. BlueJ ist, wie Eclipse eine IDE. Also eine Umgebung um dir die Entwicklung zu vereinfachen. Ein Java-Programm wird aber immer gleich kompiliert.

2. Bei der registrieren Funktion ist die Schleife unnötig. Du kannst dir den aktuellen index des Arrays (deine Tabelle) einfach hochzählen. Du benutzt also eine Variable index, die mit 0 beginnt und einfach hochgezählt wird, immer dann wenn ein Verein hinzugefügt wurde.

3. Ein Konstruktor enthält alle Anweisungen die bei der Instanziierung eines Objekts ausgeführt werden sollen. Der Konstuktor der Klasse Verein und dessen Code-Zeilen werden immer dann ausgeführt wenn du "new Verein()" aufrufst. Selbstverständlich darf ein Konstruktor auch Parameter haben.
In deinem Fall ist die String variable "name" z.B. eine typischer Parameter für einen Konstruktor:
Java:
public Verein(String name){
this.name=name;
....usw.
}
 

MA

Mitglied
Ok, super,

die registriere mache ich nun so ohne Schleife:

Java:
    public void registriere(Verein verein)
    {
        // Wenn die Zahl der Registrierten kleiner ist als die der Möglichen, dann...
        if(registrierte < anzahlVereine) {
            // dann fülle das nächste Array-Element mit dem Verein (registrierte dient als index)
            tabelle[registrierte] = verein;
            // erhöhe die Zahl der Registrierten um 1
            registrierte++;
        } else {
            // ... ansonsten gib Hinweis aus
            System.out.println("Die Liga ist voll. Es können keine weiteren Eintragungen gemacht werden.");
        }
    }


Beim Anlegen eines Vereinobjekts muss nun wievor geschlagen ein Name übergeben werden:

Java:
public Verein(String name)
    {
        this.name=name;
     }


Toll, bliebe nur noch die Zusatzaufgabe mit dem Comparator...

Zusatzaufgabe: Entwickeln Sie eine Methode void gibTabelleAus(), die eine Tabelle ausgibt, in der die Vereine absteigend nach Ihren Punkten sortiert sind. Dazu eignet sich das Interface Compara tor aus der Java-Standardbibliothek. (4 Punkte)


Ich habe herausgefunden, dass ich den Comparator als eigene Klasse anlegen muss. Diese habe ich erstellt:

Java:
import java.util.Comparator;
 
public class VereinComparator implements Comparator<Verein> {
 
  public int compare(Verein v1, Verein v2) {
 
    if (v1.gibPunkte() == v2.gibPunkte()) {
      return 0;
    }
    else if (v1.gibPunkte() > v2.gibPunkte()) {
      return -1;
    }
    else {
      return 1;
    }
  }
}


Nun müsste ich wohl in der Klasse "Ligatabelle" eine Methode "gibTabelleAus()" schreiben, die den Comparator aufruft, oder?

Aber was kommt da rein? Hab vier Stunden im Internet gesucht, aber die wenigen Beispiele raff ich nicht.

Habt Ihr noch einen Lösungsansatz für mich?

Matthias
 

MA

Mitglied
Nun,

static
<T> void
sort(T[] a, Comparator<? super T> c)
Sorts the specified array of objects according to the order induced by the specified comparator.

bringt mich nicht weiter. Ich weiß nicht, was das große T bedeutet oder das Fragezeichen oder die unterschiedlichen Klammern, vom kleinen C ganz zu schweigen.

Das ist echt frustrierend. Seit wiederum vier Stunden auf der Suche nach einem Beispiel, das irgendwie verständlich ist. Überall werden Objekte angelegt, dabei muss ich doch längst vorhandene vergleichen.

Wenn mein Comparator stimmen sollte (?), wie nutzt er mir?

Matthias
 

Fu3L

Top Contributor
Sorts the specified array of objects according to the order induced by the specified comparator. All elements in the array must be mutually comparable by the specified comparator (that is, c.compare(e1, e2) must not throw a ClassCastException for any elements e1 and e2 in the array).

This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.

Das heißt einfach, du rufst:

Java:
Arrays.sort(tabelle, new VereinComparator());

auf und danach ist das Array sortiert ;)

T ist hier der Platzhalter für den konkreten Typs des Arrays. Sieht kompliziert aus, ist es aber nicht^^ Einfach denken: Irgendein Typ^^
 

Volvagia

Top Contributor
Das T ist der Variablentyp, in dem Fall ein generischer. Das c ist der Variablenname. -.-
Wenn du bis jetzt schon Probleme hattest, lass die Zusatzaufgabe doch aus. Bringt doch nichts, wenn du es jetzt irgendwie zusammenschnippselst und am Ende nichtmal bei den Basics die du bisher gelöst hast weiterkommst. Kümmer dich lieber darum, dass du diese einmal festigst.
 

MA

Mitglied
Hey super!

Java:
Arrays.sort(tabelle, new VereinComparator());

Herrlich, ich hatte sämtliche Varianten:
Java Blog Buch : D) Objekte sortieren – Comparator und Comparable
http://www.java-forum.org/allgemeines/39510-arrays-listen-sortieren.html#post246043
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 12.4 Vergleichen von Objekten

versucht, und dann ist es nur eine Zeile. ;)

Hier also der Comparator

Java:
import java.util.Comparator;

public class VereinComparator implements Comparator<Verein> 
{ 
  // @Override 
  public int compare( Verein v1, Verein v2 ) 
  {
    if (v1.punkte == v2.punkte) {
      return 0;
    }
    else if (v1.punkte > v2.punkte) {
      return -1;
    }
    else {
      return 1;
    }
  }
}

und die Ausgabe:

Java:
public void gibTabelleAus()
    {
        Arrays.sort(tabelle, new VereinComparator());
        for (int i = 0; i < registrierte; i++) {
            System.out.println("Platz "+ (i+1) +") "+ tabelle[i].name+" mit "+tabelle[i].punkte+" Punkten");
        }  
    }

Klappt soweit auch ganz gut. Nur wenn ich weniger Vereine registriere als Elemente im Array tabelle sind, gibt es eine NullPointerExeption, da der Rest der Elemente nicht gefüllt ist.

Also hab ich das hier versucht (neues Datenfeld erzeugt, ein neues Array geschrieben mit der Länge der Registrierten, gefüllte Elemente in das neue Array kopiert, diese dann sortieren lassen):

Java:
private Verein[] reihenfolge;
    public void gibTabelleAus()
    {
        reihenfolge = new Verein[registrierte];
        for (int i = 0; i < registrierte; i++) {
            reihenfolge[i] = tabelle[i];
        }  
        
        Arrays.sort(reihenfolge, new VereinComparator());
        for (int i = 0; i < registrierte; i++) {
            System.out.println("Platz "+ (i+1) +") "+ tabelle[i].name+" mit "+tabelle[i].punkte+" Punkten");
        }  
    }

Nun sortiert er aber nicht mehr...:autsch: Ist das überhaupt der richtige Ansatz?

Matthias
 

MA

Mitglied
Juchuuuuuuuuuuu.......,

ich habs:

Java:
public void gibTabelleAus()
    {
        Verein[] reihenfolge = new Verein[registrierte];
        for (int i = 0; i < registrierte; i++) {
            reihenfolge[i] = tabelle[i];
        }  
        
        Arrays.sort(reihenfolge, new VereinComparator());
        for (int i = 0; i < registrierte; i++) {
            System.out.println("Platz "+ (i+1) +") "+ reihenfolge[i].name+" mit "+reihenfolge[i].punkte+" Punkten");
        }  
    }

Vielen Dank an alle Mitdenker!

Matthias
 

Fu3L

Top Contributor
Edit2: Böööser Gedankenfehler^^

Außerdem bringt es nichts, dass Array reihenfolge zu sortieren und dann das Array tabelle auszugeben ;)

Edit: zu langsam^^
 
Zuletzt bearbeitet:

MA

Mitglied
Hier noch mal die 3 Klassen, mit denen ich diese Aufgabe komplett löste:


Der Verein:
Java:
public class Verein
{
    public String name;
    public int gewonnen;
    public int unentschieden;
    private int punkteProGewonnen;
    private int punkteProUnentschieden;
    

    /**
     * K o n s t r u k t o r
     */
    public Verein(String name)
    {
        this.name=name;
        gewonnen = 0;
        unentschieden = 0;
        punkteProGewonnen = 3;
        punkteProUnentschieden = 1;
    }
    
    /**
     * Erhöht die Anzahl der gewonnenen Spiele um 1
     */
    public void gewonnen()
    {
        gewonnen++;
    }

    /**
     * Erhöht die Anzahl der unentschiedenen Spiele um 1
     */
    public void unentschieden()
    {
        unentschieden++;
    }
    
    /**
     * Gibt die Anzahl der Punkte aus
     */
    public int gibPunkte()
    {
        return (unentschieden * punkteProUnentschieden) + (gewonnen * punkteProGewonnen);
    }
    
    /**
     * Gibt den Namen des Vereins aus
     */
    public void gibName()
    {
        System.out.println(name);
    }
}


Die Ligatabelle:
Java:
import java.util.Comparator;
import java.util.Arrays;

public class Ligatabelle
{
    private int anzahlVereine;
    private Verein[] tabelle; // Array deklarieren =>  Array-Typ[] Array-Name
    private int registrierte; // enthält Anzahl der registrierten Vereine

    /**
     * K o n s t r u k t o r
     */
    public Ligatabelle()
    {
        anzahlVereine = 20; // Anzahl der möglichen Vereine
        tabelle = new Verein[anzahlVereine]; // Array-Objekt mit [n] Elementen erstellen (alle sind nun "null")
        registrierte = 0; // Anzahl der registrierten Vereine
    }

    
    /**
     * Diese Methode gibt die Anzahl der maximal zu vergebenen Plätze aus
     */
    public int gibAnzahlPlaetze()
    {
        return anzahlVereine;
    }
    
    /**
     * Diese Methode registriert einen Verein. Ist die Liga voll, wird ein 
     * Hinweis ausgegeben und die Registrierung abgebrochen
     */
    public void registriere(Verein verein)
    {
        // Wenn die Zahl der Registrierten kleiner ist als die der Möglichen, dann...
        if(registrierte < anzahlVereine) {
            // dann fülle das nächste Array-Element mit dem Verein (registrierte dient als index)
            tabelle[registrierte] = verein;
            // erhöhe die Zahl der Registrierten um 1
            registrierte++;
        } else {
            // ... ansonsten gib Hinweis aus
            System.out.println("Die Liga ist voll. Es können keine weiteren Eintragungen gemacht werden.");
        }
    }
    
    /**
     * Diese Methode gibt die Anzahl der bereits reigistrierte Vereine an
     */
    public int gibRegistrierte()
    {
        return registrierte;
    }
    
   
    
    /**
     * Diese Methode gibt die registrierten Vereine in einer Übersicht aus
     */
    public void gibVereine()
    {
        for (int i = 0; i < registrierte; i++) {
            System.out.println(tabelle[i].name+" ) gewonnen: "+tabelle[i].gewonnen+" / unentschieden: "+tabelle[i].unentschieden);
        }  
    }
   

    /**
     * Diese Methode gibt die registrierten Vereine in einer nach den erzielten
     * Punkten geordneten Übersicht aus (mittels Comparator Klasse "VereinComparator")
     */
    public void gibTabelleAus()
    {
        // Neues Array reihenfolge zur Vermeidung einer NullPointerExeption anlegen
        Verein[] reihenfolge = new Verein[registrierte];
        
        // ...und befüllen mit den gefüllten Elementen des Arrays tabelle
        for (int i = 0; i < registrierte; i++) {
            reihenfolge[i] = tabelle[i];
        }  
        
        // Sortieren des Arrays
        Arrays.sort(reihenfolge, new VereinComparator());
        
        // das sortierte Array reihenfolge ausgeben
        for (int i = 0; i < registrierte; i++) {
            System.out.println("Platz "+ (i+1) +") \t "+ reihenfolge[i].name +" mit "+ reihenfolge[i].gibPunkte() +" Punkten");
        }  
    }
}


Der Comparator
Java:
import java.util.Comparator;

public class VereinComparator implements Comparator<Verein> 
{ 
  // @Override 
  public int compare( Verein v1, Verein v2 ) 
  {
    if (v1.gibPunkte() == v2.gibPunkte()) {
      return 0;
    }
    else if (v1.gibPunkte() > v2.gibPunkte()) {
      return -1;
    }
    else {
      return 1;
    }
  }
}

Das Wochenende war zwar im Eimer, aber ich hab einiges gerafft. :toll:

Danke noch mal und Grüße,

Matthias
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
S Ein Java Anfänger braucht Hilfe Java Basics - Anfänger-Themen 5
F Anfänger braucht Hilfe :) Java Basics - Anfänger-Themen 3
D Anfänger braucht Hilfe Java Basics - Anfänger-Themen 2
V Erste Schritte Java-Anfänger braucht Hilfe bei Arrays Java Basics - Anfänger-Themen 19
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
I totaler Anfänger braucht Hilfe Java Basics - Anfänger-Themen 8
T Hallo anfänger braucht Hilfe :D Java Basics - Anfänger-Themen 7
C Anfänger braucht Hilfe bei Schularbeit Java Basics - Anfänger-Themen 3
F Anfänger braucht Hilfe Java Basics - Anfänger-Themen 24
L Klassen Anfänger braucht Hilfe! Probleme mit Javakara.jar Java Basics - Anfänger-Themen 25
W Anfänger braucht Hilfe bei Hausübung! Sprachauswahl? Wie? Java Basics - Anfänger-Themen 9
D Anfänger braucht Hilfe:Interface Java Basics - Anfänger-Themen 14
X Anfänger braucht hilfe! Java Basics - Anfänger-Themen 4
G Textfeld und Label in einem Tab? Anfänger braucht Hilfe Java Basics - Anfänger-Themen 3
S Blutiger Java Anfänger braucht dringend Hilfe Java Basics - Anfänger-Themen 4
E Anfänger braucht Hilfe Java Basics - Anfänger-Themen 6
T Vokabelbuch programmieren - Anfänger braucht Hilfe! Java Basics - Anfänger-Themen 17
J blutiger Anfänger braucht Hilfe ^^ Java Basics - Anfänger-Themen 3
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
H Threads Anfänger Java Basics - Anfänger-Themen 17
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
K Buchstabenzähler Java (Anfänger) Java Basics - Anfänger-Themen 35
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
_Zabuza_ Erste Schritte Wie am effektivsten Java lernen als Anfänger? Java Basics - Anfänger-Themen 12
T Roulette für Anfänger Java Basics - Anfänger-Themen 7
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
K Java Anfänger Java Basics - Anfänger-Themen 5
F Hilfe für einen Anfänger! Java Basics - Anfänger-Themen 4
P Übungsaufgaben für Anfänger? Java Basics - Anfänger-Themen 2
Z Unklarheit bei Übungsaufgabe [Anfänger] Java Basics - Anfänger-Themen 22
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
CT9288 Mini Anfänger-Problem mit loops, statements und ; Java Basics - Anfänger-Themen 4
F Hilfe, bin Anfänger! Java Basics - Anfänger-Themen 4
R Erste Schritte Materialien für Java-Anfänger Java Basics - Anfänger-Themen 7
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
F Studium aufgabe ...Anfänger sucht hilfe :D Java Basics - Anfänger-Themen 24
F Abrechnungsprogramm erstellen Student (Anfänger) Java Basics - Anfänger-Themen 2
J Musikplayer zu schwer für Anfänger? Java Basics - Anfänger-Themen 3
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
V Erste Schritte Anfänger: Ausführen eines Java-Programms Java Basics - Anfänger-Themen 5
Textsurfer Methoden Anfänger * Java Basics - Anfänger-Themen 5
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
C verwirrter Anfänger Java Basics - Anfänger-Themen 6
L Verzinsungsprogramm (Java-Anfänger) Java Basics - Anfänger-Themen 3
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
H Methoden Bluej Anfänger Java Basics - Anfänger-Themen 13
M Erste Schritte Einfache Aufzugssteuerung programmieren - Anfänger Java Basics - Anfänger-Themen 2
D Anfänger-Problem mit dem HalloWelt-Programm Java Basics - Anfänger-Themen 5
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
V Array mit Zufallszahlen - Anfänger - Hilfe Java Basics - Anfänger-Themen 12
J Anfänger hat Problem mit seinen Beet Java Basics - Anfänger-Themen 12
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
das_leon if als Auswahl (Anfänger) Java Basics - Anfänger-Themen 1
N Anfänger Problem Java Basics - Anfänger-Themen 4
GoodGuy [Anfänger] Kann mal wer drüber gucken? Java Basics - Anfänger-Themen 3
R Erste Schritte Anfänger Probleme bei AnimationDrawable Java Basics - Anfänger-Themen 0
C Taxiwarteschlange - Anfänger Java Basics - Anfänger-Themen 2
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
I Java, Application, Eclipse (Anfänger) Java Basics - Anfänger-Themen 1
M Java Anfänger - Video Tutorial Reihe (DEUTSCH) Java Basics - Anfänger-Themen 11
C Anfänger: Array + Klasse Java Basics - Anfänger-Themen 5
S OOP Uhrenanzeige programmieren, Achtung Anfänger! Java Basics - Anfänger-Themen 9
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
I Erste Schritte Bücher für Jungedliche[Anfänger] Java Basics - Anfänger-Themen 20
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
A Anfänger Taschenrechner Frage Java Basics - Anfänger-Themen 14
D error: Class names, >>>HILFE, anfänger<<< Java Basics - Anfänger-Themen 4
J Hilfe für Anfänger Java Basics - Anfänger-Themen 8
E OOP Methode an andere Methode übergeben / OOP Anfänger Java Basics - Anfänger-Themen 4
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
H MergeSort (für Anfänger ) Java Basics - Anfänger-Themen 9
X Projekt Java Anfänger Java Basics - Anfänger-Themen 28
C Fehlersuche Adressbuch *Anfänger* Java Basics - Anfänger-Themen 5
J Erste Schritte Hilfe bei absolutem Anfänger-Projekt Java Basics - Anfänger-Themen 4
A Erste Schritte Übungen für Anfänger Java Basics - Anfänger-Themen 31
M Sieb des Eratosthenes für Anfänger Java Basics - Anfänger-Themen 10
M Tipps für einen Java-Anfänger Java Basics - Anfänger-Themen 5
S Anfänger Aufgaben Java Basics - Anfänger-Themen 6
G Anfänger-Errors und Fragen Java Basics - Anfänger-Themen 22
S Java für Anfänger: Probleme mit read() Java Basics - Anfänger-Themen 20
P [Anfänger] DiceGame Aufagbe Java Basics - Anfänger-Themen 23

Ähnliche Java Themen

Neue Themen


Oben