Erste Schritte Random

Devanther

Top Contributor
Hallo,

bevor ich im anderen Thread von mir weitermache, hier eine etwas einfachere Aufgabe:

Wir werden etwas hinzufügen, über das die meisten Musikplayer verfügen: eine
"Shuffle" beziehungsweise "Zufallsabspiel" Funktion.
Das Paket java.util enthält die Klasse Random, deren Methode nextInt eine positive
ganze Zahl innerhalb eines begrenzten Bereichs erzeugt. Schreiben Sie eine Methode in
der Klasse Musiksammlung, die einen zufälligen Track ihrer Liste auswählt und abspielt.

Hinweis: Sie müssen Random importieren und ein Random Objekt erzeugen - und
zwar entweder direkt in der neuen Methode oder im Konstruktor und anschließend
in einem Datenfeld speichern. Lesen Sie die API-Dokumentation für die Random-Klasse
um festzustellen, welche der nextInt-Methoden Sie wählen müssen.

Was ich bisher gemacht habe:
- neue Klasse Musiksammlung erstellt
-Random importiert
-Methode geschrieben ( ist fehlerhaft)
Code:
/**
* Beschreiben Sie hier die Klasse MusikSammlung.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
import java.util.Random;

public class MusikSammlung
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private int x;
 
    private int zufallsgenerator;

    /**
     * Konstruktor für Objekte der Klasse MusikSammlung
     */
    public MusikSammlung()
    {
 
        x = 0;
    }
    public int Shuffle()
    { Random zufallsgenerator;
        zufallsgenerator = new Random();
        int index = zufallsgenerator.nextInt(); System.out.println(index);
  
        return zufallsgenerator;
    }
 
 
    /**
     * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
     *
     * @param  y    ein Beispielparameter für eine Methode
     * @return        die Summe aus x und y
     */
    public int beispielMethode(int y)
    {
        // tragen Sie hier den Code ein
        return x + y;
    }
}

Bei return zufallsgenerator kommt eine Fehlermeldung

die einen zufälligen Track ihrer Liste auswählt und abspielt.
Welchen Track, aus welcher Liste? Was ist hier überhaupt gemeint?

Um eine Zufallszahl zu erzeugen, müssen wir
-eine Instanz der Klasse Random erzeugen
-an dieser Instanz eine Methode aufrufen, um eine Zufallszahl zu erhalten
 
Zuletzt bearbeitet:

Devanther

Top Contributor
Wenn von einer Trackliste gesprochen wird und die Klasse keine hat, sollte man mal eine hinzufügen.

Wie mache ich das? Wie mit ArrayList?

Code:
/**
* Beschreiben Sie hier die Klasse MusikSammlung.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
import java.util.ArrayList;
import java.util.Random;

public class MusikSammlung
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private int x;
   
    private int zufallsgenerator;
   
    private ArrayList<Tracks> lieder;

    /**
     * Konstruktor für Objekte der Klasse MusikSammlung
     */
    public MusikSammlung()
    {
        lieder = new ArrayList<Tracks>();
        x = 0;
    }
    public int Shuffle()
    { Random zufallsgenerator;
        zufallsgenerator = new Random();
        int index = zufallsgenerator.nextInt(); System.out.println(index);
       
        return zufallsgenerator;
    }   
   
   
    /**
     * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
     *
     * @param  y    ein Beispielparameter für eine Methode
     * @return        die Summe aus x und y
     */
    public int beispielMethode(int y)
    {
        // tragen Sie hier den Code ein
        return x + y;
    }
}

Es kommt bei return zufallsgenerator; immer noch ne Fehlermeldung.
 
Zuletzt bearbeitet:

JStein52

Top Contributor
Wenn von einer Trackliste gesprochen wird und die Klasse keine hat, sollte man mal eine hinzufügen.
Du solltest in deinem Projekt eine weitere Klasse "Track" anlegen, Attribute evtl. "name", "interpret" mit einem Konstruktor der genau die zwei Werte als Parameter kriegt. Dann machst du in dieser Klasse noch eine Methode
"play()" die z.B. Name und Interpret auf der Konsole ausgibt.
In deiner Klasse Musiksammlung legst du dann eine ArrayList<Track> an in die du mal so ca. 10 Tracks einfügst.
Dann generierst du in der Methode shuffle eine Zufallszahl zwischen 0 und der Länge der Liste. Dieses Element holst du dir dann mit get(nummer) aus der Liste und rufst dessen Methode play() auf.
 

Devanther

Top Contributor
Erstmal vielen Dank bis hier hin.
Code:
/**
* Beschreiben Sie hier die Klasse Tracks.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Tracks
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private int x;
  
    private String name;
  
    private String interpret;

    /**
     * Konstruktor für Objekte der Klasse Tracks
     */
    public Tracks(String name, String interpret)
    {
        this.name = name;
        this.interpret = interpret;
        x = 0;
    }
    public String Abspielen (play)
  
        System.out.println("Name" + name + "Interpret" + interpret)
          
        return
      
  
    /**
     * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
     *
     * @param  y    ein Beispielparameter für eine Methode
     * @return        die Summe aus x und y
     */
    public int beispielMethode(int y)
    {
        // tragen Sie hier den Code ein
        return x + y;
    }
}

public String Abspielen (play)
in dieser Zeile kommt ne Fehlermeldung.
Wie muss ich die return Methode schreiben?
Ist die Aufgabe bis zu dieser Stelle richtig?
 
Zuletzt bearbeitet:

JStein52

Top Contributor
in dieser Zeile kommt ne Fehlermeldung.
Dort müsste wenn schon ein Typ und ein Name stehen z.B. (String play). Aber wieso braucht die Methode denn überhaupt einen Parameter ? Also einfach ()

Edit:
Code:
public void abspielen () {
        System.out.println("Name " + name + "  Interpret " + interpret);
        return;
}

Ich würde die Klasse auch Track nennen und nicht Tracks denn sie beschreibt ja nicht mehrere Tracks sondern einen
 

Devanther

Top Contributor
Code:
/**
* Beschreiben Sie hier die Klasse Tracks.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Track
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
   
    private String name;
   
    private String interpret;

    /**
     * Konstruktor für Objekte der Klasse Tracks
     */
    public Track(String name, String interpret)
    {
        this.name = name;
        this.interpret = interpret;
    }
    public String play()
   
        System.out.println("Name" + name + "Interpret" + interpret)
           
        return
       
   
    /**
     * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
     *
     * @param  y    ein Beispielparameter für eine Methode
     * @return        die Summe aus x und y
     */
    public int beispielMethode(int y)
    {
        // tragen Sie hier den Code ein
        return x + y;
    }
}

Es kommt immer noch eine Fehlermeldung bei der Methode.
Wie schreibe ich die return Anweisung?
 

JStein52

Top Contributor
ich habe es dir doch oben gezeigt. Einziger Unterschied: bei mir heisst sie "abspielen" und du hast sie jetzt "play" genannt
 

Devanther

Top Contributor
uuups, sorry, übersehen

So, bis hier hin geht alles!

In deiner Klasse Musiksammlung legst du dann eine ArrayList<Track> an in die du mal so ca. 10 Tracks einfügst.

Wie mache ich das? Wie füge ich 10 Tracks ein?

Code:
/**
* Beschreiben Sie hier die Klasse MusikSammlung.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
import java.util.ArrayList;
import java.util.Random;

public class MusikSammlung
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private int x;
   
    private int zufallsgenerator;
   
    private ArrayList<Track> lieder;

    /**
     * Konstruktor für Objekte der Klasse MusikSammlung
     */
    public MusikSammlung()
    {
        lieder = new ArrayList<Track>();
        x = 0;
    }
    public int Shuffle()
    { Random zufallsgenerator;
        zufallsgenerator = new Random();
        int index = zufallsgenerator.nextInt(); System.out.println(index);
       
        return index;
    }   
   
   
    /**
     * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
     *
     * @param  y    ein Beispielparameter für eine Methode
     * @return        die Summe aus x und y
     */
    public int beispielMethode(int y)
    {
        // tragen Sie hier den Code ein
        return x + y;
    }
}
 
Zuletzt bearbeitet:

Devanther

Top Contributor
Ne, mir geht immer noch kein Licht auf.

Code:
public void beitreten(Mitgliedschaft mitglied)
    {
      
        this.mitglied.add(mitglied);
    }

Das habe ich schon mal geschafft in einer früheren Aufgabe.
Aber 10 Tracks einfügen, wie das?
 
Zuletzt bearbeitet:

JStein52

Top Contributor
Code:
lieder.add(new Track("Moon Walk", "Michael Jackson"));

Edit: wie kommst du auf Mitgliedschaft und beitreten ? Wir sind doch bei der Musiksammlung oder ?
 

Devanther

Top Contributor
Code:
lieder.add(new Track("Moon Walk", "Michael Jackson"));

Wo genau muss ich das einfügen?
lieder.add ... auf diese Art und Weise 10 songs aufschreiben?
 

JStein52

Top Contributor
Du kannst es zum Beispiel im Konstruktor von MusikSammlung machen:
Code:
/**
     * Konstruktor für Objekte der Klasse MusikSammlung
     */
    public MusikSammlung()
    {
        lieder = new ArrayList<Track>();
        lieder.add(new Track("Moon Walk", "Michael Jackson"));
        lieder.add(new Track("Mamma mia", "ABBA"));
        //usw.
    }
 

Devanther

Top Contributor
Danke!

Dann generierst du in der Methode shuffle eine Zufallszahl zwischen 0 und der Länge der Liste. Dieses Element holst du dir dann mit get(nummer) aus der Liste und rufst dessen Methode play() auf.

Eine Zufallszahl wird mit Hilfe der shuffle-Methode generiert, aber nicht nach der Länge der Liste, wie verbessere ich das? Weiter weiss ich nicht, da bin ich echt überfordert.
So genau wurde das im Buch auch nicht erklärt leider....
 

JStein52

Top Contributor
Also:
public int nextInt(int bound)

Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)
d.h. es könnte etwa so aussehen:
Code:
public int Shuffle()
    { Random zufallsgenerator;
        zufallsgenerator = new Random();

        // um diese 2 Zeilen kannst du noch irgendeine Art Schleife drumrum machen
        // so dass er dir z.B. 100 mal ein zufällig ausgewähltes Lied aus deiner Liste spielt
        int index = zufallsgenerator.nextInt(lieder.size());
        lieder.get(index).play();
       
        return index;
    }
 

Salmo Salar

Mitglied
Hallo Devanther, bei uns wurde bei BlueJ als "Einfügen" immer erwartet, dass wir ein Objekt einer Klasse manuell erzeugen (Rechtsklick auf Klasse -> new Track -> Rechtsklick auf Objekt -> zurListeHinzufügen()). Dazu sollte die Klasse (in diesem Fall Track) eine Methode "zurListeHinzufügen()" enthalten. So sollte man das Zugreifen auf verschiedene Objekte üben. Wenn du das Buch nur für dich zum Spaß durcharbeitest, mach lieber wie JStein52 geraten hat - das ist echte Programmierung. Wenn du aber in einem Kurs lernst, der sich strikt an die grafische BlueJ-Idee hält, würde ich noch mal nachfragen, wie das gemeint war.
 

Blender3D

Top Contributor
Du kannst es zum Beispiel im Konstruktor von MusikSammlung machen:
public MusikSammlung()
{
lieder = new ArrayList<Track>();
lieder.add(new Track("Moon Walk", "Michael Jackson"));
lieder.add(new Track("Mamma mia", "ABBA"));
//usw.
}

Machen kann man das stimmt. Aber dort ist es nicht sinnvoll. Die Musiksammlung baut sich dynamisch auf. Wenn Du z.B. denn Track "Mamma mia" nicht mehr hast. Wäre er automatisch dabei sobald Du ein Objekt vom Typ MusikSammlung erzeugst.
Dafür solltest Du Funktionen wie z.B. addTrack( ) und removeTrack( ) anbieten, die von Deinem UseriInterface dann aufgerufen werden wenn es sinnvoll ist.
 

Devanther

Top Contributor
Code:
/**
* Beschreiben Sie hier die Klasse MusikSammlung.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
import java.util.ArrayList;
import java.util.Random;

public class MusikSammlung
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private int x;
 
    private int zufallsgenerator;
 
    private ArrayList<Track> lieder;

    /**
     * Konstruktor für Objekte der Klasse MusikSammlung
     */
    public MusikSammlung()
    {
        lieder = new ArrayList<Track>();
        lieder.add(new Track("Moon Walk", "Michael Jackson"));
        lieder.add(new Track("Mamma mia", "ABBA"));
        lieder.add(new Track("Eminem", "Business"));
        lieder.add(new Track("Papa Roach", "Getting away with murder"));
        x = 0;
    }
    public int Shuffle()
    { Random zufallsgenerator;
        zufallsgenerator = new Random();
        int index = zufallsgenerator.nextInt(lieder.size());
        lieder.get(index).abspielen();
     
        return index;
    } 
 
    /**
     * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
     *
     * @param  y    ein Beispielparameter für eine Methode
     * @return        die Summe aus x und y
     */
    public int beispielMethode(int y)
    {
        // tragen Sie hier den Code ein
        return x + y;
    }
}

So, wenn ich eine Instanz der Klasse Musiksammlung erzeuge und die Methode-shuffle aufrufe,
wird eine Zufallszahl generiert und der zufällige Track wird erfolgreich auf der Konsole ausgegeben.

meine Methode heisst abspielen() und nicht play()

public int nextInt(int bound)
was ist damit gemeint?
 

Salmo Salar

Mitglied
@JStein52 Ich würde mich über einen respektvollen Umgang in diesem Thread freuen, denn ich möchte Java lernen und nicht meine Beziehungen mit Menschen klären, die ich noch nie gesehen habe.
Ich gebe ohne Umschweife zu, dass BlueJ eine lausige IDE ist - die Aufgabe stammt aus dem BlueJ-Buch und der Quellcode enthält Reste der BlueJ-Vorlagen.
Du hast Blender3D geantwortet, dass Devanther noch nicht soweit ist, eine Benutzeroberfläche zu machen - dafür ist BlueJ aber da. Man kann per Hand Methoden aufrufen, Parameter übergeben, Klassen erzeugen. Ohne eine Benutzeroberfläche mit Listenern und allem drum und dran programmieren zu müssen. BlueJ ist nicht als professionelle Entwicklungsumgebung gedacht, sondern als Einstieg, wie auch der Biologieunterricht in der Schule einem Arzt nicht das Studium ersetzt. Aber zu Beginn erleichtert.
 

Meniskusschaden

Top Contributor
@JStein52 Ich würde mich über einen respektvollen Umgang in diesem Thread freuen, denn ich möchte Java lernen und nicht meine Beziehungen mit Menschen klären, die ich noch nie gesehen habe.
Ich finde nicht, daß das Posting von @JStein52 respektlos war (zumindest nicht gegenüber @Devanther, höchstens gegenüber BlueJ;)). Ich kann da wirklich kein Bashing erkennen, sondern nur einen konstruktiv gemeinten Hinweis.

Du hast Blender3D geantwortet, dass Devanther noch nicht soweit ist, eine Benutzeroberfläche zu machen - dafür ist BlueJ aber da. Man kann per Hand Methoden aufrufen, Parameter übergeben, Klassen erzeugen. Ohne eine Benutzeroberfläche mit Listenern und allem drum und dran programmieren zu müssen. BlueJ ist nicht als professionelle Entwicklungsumgebung gedacht, sondern als Einstieg, wie auch der Biologieunterricht in der Schule einem Arzt nicht das Studium ersetzt. Aber zu Beginn erleichtert.
Meines Erachtens geht es bei BlueJ darum, Java zu lernen ohne Java zu lernen. Halte ich für ein sinnloses Unterfangen. Die Konsequenzen des BlueJ-Einsatzes nerven hier eben gelegentlich ein wenig, beispielsweise wenn nicht ausführbarer Code gepostet wird, weil nicht einmal bekannt ist, daß man eine main-Methode braucht.;)
 

Devanther

Top Contributor
OK.

Definieren Sie in der Klasse Verein eine Methode, die
folgendermaßen beschrieben ist:
-Liefere die Anzahl der Mitglieder, die im angegebenen Monat
-Mitglied geworden sind
-@param monat der Monat des Beitritts.
-@return die Anzahl der Mitglieder, die im Monat beigetreten sind

public int beigetretenInMonat(int Monat)

Wenn der Parameter monat außerhalb des gültigen Bereichs von 1 bis 12 liegt, dann
gibt die Methode eine Fehlermeldung aus und liefert null zurück.

Wie fange ich an?
Es geht immer noch um das selbe Kapitel(4). Es sind die Aufgaben die auf die letzen folgen.
Ob es da viele Zusammenhänge gibt, weiss ich nicht.
 

Flown

Administrator
Mitarbeiter
Fang doch mal an, dass du die Methode deiner Klasse hinzufügest, den Aufgabentext als Javadoc raufklatscht und mit der Fehlerbehandlung in den ersten Zeilen.
 

JStein52

Top Contributor
Und überleg dir mal an was du erkennst in welchem Monat ein Mitglied dem Verein beigetreten ist. Das ist hier jetzt nicht ersichtlich weil wir deine Klasse Verein nicht haben.
 

Devanther

Top Contributor
Code:
/**
 * Speichert Details über Vereinsmitgliedschaften.
 *
 * @author (Ihr Name)
 * @version (eine Versionsnummer oder ein Datum)
 */
public class Verein
{
    // Definieren Sie alle notwendigen Datenfelder hier...
  
    /**
     * Konstruktor für Objekte der Klasse Verein
     */
    public Verein()
    {
        // Initialisieren Sie die Datenfelder hier...
      
    }

    /**
     * Füge ein neues Mitglied in die Mitgliederliste ein.
     * @param mitglied Infos über das einzufügende Mitglied.
     */
    public void beitreten(Mitgliedschaft mitglied)
    {
    }

    /**
     * @return die Anzahl der Mitglieder (Mitgliedschaft-Objekte)
     *         in diesem Verein.
     */
    public int anzahlMitglieder()
    {
        return 0;
    }
}

Das ist die Klasse Verein.
Ich weiss leider nicht, wie ich anfangen soll.
 
Zuletzt bearbeitet:

JStein52

Top Contributor
Im Verein legst du wieder eine ArrayList<Mitgliedschaft> meineMitglieder = new ArrayList<Mitgliedschaft>();
an. Und dann implementierst du erst mal die Methode beitreten ...
 

Devanther

Top Contributor
Code:
/**
 * Speichert Details über Vereinsmitgliedschaften.
 * 
 * @author (Ihr Name) 
 * @version (eine Versionsnummer oder ein Datum)
 */
import java.util.ArrayList;

public class Verein
{
    private ArrayList<Mitgliedschaft> meineMitglieder;
   
    /**
     * Konstruktor für Objekte der Klasse Verein
     */
    public Verein()
    {
        meineMitglieder = new ArrayList<Mitgliedschaft>();
       
    }
    public int beigetretenInMonat(int Monat)
    {
   
    }    
   
    /**
     * Füge ein neues Mitglied in die Mitgliederliste ein.
     * @param mitglied Infos über das einzufügende Mitglied.
     */
    public void beitreten(Mitgliedschaft mitglied)
    {
    }

    /**
     * @return die Anzahl der Mitglieder (Mitgliedschaft-Objekte)
     *         in diesem Verein.
     */
    public int anzahlMitglieder()
    {
        return 0;
    }
}

Methode implementieren, das ist ja gerade das Problem.
 
X

Xyz1

Gast
Ich weiß nicht genau, worums hier geht, aber ich habe das Gefühl, ich habe schon einmal auf etwas mit Musiksammlung geantwortet (in jüngster Zeit)...
Was ist das aktuelle Problem denn?
 

Devanther

Top Contributor
Code:
public MusikSammlung()
    {
        lieder = new ArrayList<Track>();
        lieder.add(new Track("Moon Walk", "Michael Jackson"));
        lieder.add(new Track("Mamma mia", "ABBA"));
        lieder.add(new Track("Eminem", "Business"));
        lieder.add(new Track("Papa Roach", "Getting away with murder"));
        x = 0;
    }

Hab das wiedergefunden.

Code:
/**
 * Speichert Details über Vereinsmitgliedschaften.
 * 
 * @author (Ihr Name) 
 * @version (eine Versionsnummer oder ein Datum)
 */
import java.util.ArrayList;

public class Verein
{
    private ArrayList<Mitgliedschaft> meineMitglieder;
   
    /**
     * Konstruktor für Objekte der Klasse Verein
     */
    public Verein()
    {
        meineMitglieder = new ArrayList<Mitgliedschaft>();
        meineMitglieder.add
       
    }
    public int beigetretenInMonat(int Monat)
    {
   
    }    
   
    /**
     * Füge ein neues Mitglied in die Mitgliederliste ein.
     * @param mitglied Infos über das einzufügende Mitglied.
     */
    public void beitreten(Mitgliedschaft mitglied)
    {
    }

    /**
     * @return die Anzahl der Mitglieder (Mitgliedschaft-Objekte)
     *         in diesem Verein.
     */
    public int anzahlMitglieder()
    {
        return 0;
    }
}

weiter komme ich nicht -.-

Man muss die Mitglieder und die Monate in eine Liste eintragen?
Ich versteh nicht so ganz, was in der Aufgabe gefordert ist.


@DerWissende
Definieren Sie in der Klasse Verein eine Methode, die
folgendermaßen beschrieben ist:
-Liefere die Anzahl der Mitglieder, die im angegebenen Monat
-Mitglied geworden sind
-@param monat der Monat des Beitritts.
-@return die Anzahl der Mitglieder, die im Monat beigetreten sind

public int beigetretenInMonat(int Monat)

Wenn der Parameter monat außerhalb des gültigen Bereichs von 1 bis 12 liegt, dann
gibt die Methode eine Fehlermeldung aus und liefert null zurück.

Das ist das aktuelle Problem.

Code:
public Verein()
    {
        meineMitglieder = new ArrayList<Mitgliedschaft>();
        meineMitglieder.add
       
    }
 
Zuletzt bearbeitet:

Devanther

Top Contributor
Code:
/**
 * Speichert Informationen über die Mitgliedschaft
 * eines Vereinsmitglieds.
 * 
 * @author David J. Barnes und Michael Kölling
 * @version 31.07.2011
 */
public class Mitgliedschaft
{
    // Name des Mitglieds.
    private String name;
    // Der Monat seines Beitritts.
    private int monat;
    // Das Jahr seines Beitritts.
    private int jahr;

    /**
     * Konstruktor für Objekte der Klasse Mitgliedschaft.
     * @param name der Name des Mitglieds.
     * @param monat der Monat des Beitritts. (1 ... 12)
     * @param jahr das Jahr des Beitritts.
     */
    public Mitgliedschaft(String name, int monat, int jahr)
        throws IllegalArgumentException
    {
        if(monat < 1 || monat > 12) {
            throw new IllegalArgumentException(
                "Monat " + monat + " ungültig. Muss im Bereich 1 ... 12 liegen.");
        }
        this.name = name;
        this.monat = monat;
        this.jahr = jahr;
    }
   
    /**
     * @return den Namen des Mitglieds.
     */
    public String gibName()
    {
        return name;
    }
   
    /**
     * @return den Monat des Beitritts.
     *         Ein Wert aus dem Bereich 1 ... 12
     */
    public int gibMonat()
    {
        return monat;
    }

    /**
     * @return Das Jahr des Beitritts.
     */
    public int gibJahr()
    {
        return jahr;
    }

    /**
     * @return Eine String-Darstellung dieser Mitgliedschaft.
     */
    public String toString()
    {
        return "Name: " + name +
               " beigetreten in Monat " +
               monat + " / " + jahr;
    }
}
 

JStein52

Top Contributor
1.ter Schritt: du machst in Verein eine main-Methode in der du ein Verein-Objekt anlegst, dann legst du ebenfalls dort so ca. 10 verschiedene Mitgliedschaft-Objekte an und rufst für jedes dieser Mitgliedschaft-Objekte die Methode beitreten auf.
2.ter Schritt: du implementierst die Methode beitreten(...) in dem du einfach das übergebene Mitgliedschaft-Objekt in die mitglieder-Liste einfügst. (mit add(...) )
3.ter Schritt du implementierst die Methode beigetretenInMonat(...) indem du eine Schleife über alle mitglieder in der Liste machst, für jedes davon gibMonat(...) aufrufst und das Ergebnis mit dem gewünschten Monat vergleichst. Bei Gleichheit zählst du einen Zähler hoch und am Ende der Schleife return'st du diesen Zähler.
 

Devanther

Top Contributor
1.ter Schritt: du machst in Verein eine main-Methode in der du ein Verein-Objekt anlegst, dann legst du ebenfalls dort so ca. 10 verschiedene Mitgliedschaft-Objekte an und rufst für jedes dieser Mitgliedschaft-Objekte die Methode beitreten auf.

Wie genau muss ich die main-Methode schreiben?
Im Buch war zumindest bisher nichts von einer main-Methode geschrieben.
Wie lege ich ein Verein-Objekt an?
Wie genau muss ich die Mitgliedschaft-Objekte anlegen?
Und wie muss ich die beitreten-Methode schreiben?

Sorry , ich bin noch ziemlich am Anfang.
Das oben sind mindestens 4 Schritte auf einmal.
Kann man mir mit etwas geschriebenem Code weiterhelfen? Bis mir ein Licht aufgeht^^
 
Zuletzt bearbeitet:

Meniskusschaden

Top Contributor
Wie genau muss ich die main-Methode schreiben?
So:
Java:
public static void main(String[] args) {
    ...
}
Aber bei BlueJ geht es wohl auch ohne main-Methode.
Wie lege ich ein Verein-Objekt an?
Indem du den Konstruktor von Verein aufrufst.
Wie genau muss ich die Mitgliedschaft-Objekte anlegen?
Indem du den Konstruktor von Mitgliedschaft aufrufst.
Und wie muss ich die beitreten-Methode schreiben?
Du fügst die Mitgliedschaft, die der Methode übergeben wird, der Liste der Mitgliedschaften hinzu.
 

Devanther

Top Contributor
https://www.amazon.de/Java-lernen-B...0597001&sr=8-1&keywords=java+lernen+mit+bluej

Ich habe dieses Buch. Es ist wirklich sehr interessant und vieles ist sehr gut erklärt.
Allerdings kann man dem Buch leider nicht alles entnehmen, was man zur Lösung
der Aufgaben braucht. Ich finde die Aufgaben unglaublich schwer.
Deswegen frage ich hier nach Rat.

Ich denke, dass es keine besseren Bücher gibt, Java ist auch eine Insel habe ich und auch
Java von Kopf bis Fuß.
In dem Buch oben gibt es eine eigene Entwicklungsungebung "Bluej"...
Es geht alles auch ohne die main-Methode...

Indem du den Konstruktor von Verein aufrufst.
Wie heisst der code dazu? Ich bin etwas überfordert und lese das
Java BlueJ Buch nochmal von vorne, aber die Frage oben wird nicht richtig
erklärt.

und rufst für jedes dieser Mitgliedschaft-Objekte die Methode beitreten auf.

Wäre es möglich, den Code dazu zu schreiben, dann kann ich das
nachvollziehen.
 
Zuletzt bearbeitet:

Devanther

Top Contributor
Code:
public Verein()

    {
        meineMitglieder = new ArrayList<Mitgliedschaft>();
        new Verein();
 
          }

So etwa der Konstruktor in der Klasse Verein?
Parameter müssen nicht übergeben werden, weil die Klasse Verein keine hat?
Code:
public Mitgliedschaft(String name, int monat, int jahr)
        throws IllegalArgumentException
    {
        if(monat < 1 || monat > 12) {
            throw new IllegalArgumentException(
                "Monat " + monat + " ungültig. Muss im Bereich 1 ... 12 liegen.");
        }
        this.name = name;
        this.monat = monat;
        this.jahr = jahr;
    new Mitgliedschaft();
}
Wie soll ich in diesem Konstruktor der Klasse Mitgliedschaft ein Objekt erzeugen?
Welche Parameter muss ich angeben?
Oder sollen 10 verschiedene Mitgliedschaft-Objekte in der Klasse Verein
angelegt werden?

Wie schreibe ich die public int beigetretenInMonat(int Monat) Methode?
 
Zuletzt bearbeitet:

Meniskusschaden

Top Contributor
So etwa der Konstruktor in der Klasse Verein?
Es ist zwar richtig, dass ein Verein-Objekt mit new Verein(); erstellt wird, aber es ist nicht richtig, das im Konstruktor zu tun. Der Konstruktor wird durch new Verein() aufgerufen. Wenn innerhalb des Konstruktors erneut new Verein() steht, kommt es deshalb zu einer Endlosschleife, die solange läuft, bis der Stack überläuft.
Du mußt dein Objekt also außerhalb des Konstruktors erzeugen, denn wenn du dich innerhalb des Konstruktors befindest, wurde ja gerade ein Objekt erstellt. Dafür würde sich die main-Methode anbieten, mit der man das Programm startet. In BlueJ kannst du aber auch eine andere nehmen.
 

Devanther

Top Contributor
Code:
public void beitreten(Mitgliedschaft mitglied)
    {
        new Verein();
        new Mitgliedschaft();
    }

So?

oder in die methode
public int beigetretenInMonat(int Monat)?

Code:
 public int beigetretenInMonat(int Monat)
  
    { new Verein();
      new Mitgliedschaft();
 
    }
So?

Es kommt ne Fehlermeldung bei new Mitgliedschaft();.
Wie übergebe ich da die Parameter?
 

Meniskusschaden

Top Contributor
Die Methode beitreten() hat den Sinn, dem Verein ein neues Mitglied hinzuzufügen. Die Methode beigetretenInMonat() soll die neuen Mitgliedschaften des Vereins für einen gegebenen Monat ermitteln. In beiden Fällen muss es also bereits einen Verein geben, auf den sich die Aufrufe beziehen. Warum solltest du dort ein neues Verein-Objekt erstellen?
Der Methode beitreten() wird vom Aufrufer doch bereits ein fertiges Mitgliedschaft-Objekt übergeben. Warum solltest du dort ein weiteres erstellen?
Das Verein-Objekt und die Mitgliedschaften sollen doch beim Programmstart erzeugt werden. Wie willst du dein Programm denn starten? Dort wäre der richtige Platz um den Verein und die Mitgliedschaften zu erzeugen.
Es kommt ne Fehlermeldung bei new Mitgliedschaft();.
Wie übergebe ich da die Parameter?
Einfach durch Komma getrennt zwischen die Klammern schreiben.
 

Devanther

Top Contributor
Ich weiss nicht wo ich

Code:
new Verein();
new Mitgliedschaft(Aljoscha, 8, 2017);
erzeugen muss

Im Konstruktor nicht, in den Methoden auch nicht, wo denn sonst?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
laxla123 Bedeutung int random Java Basics - Anfänger-Themen 3
monsterherz Arbeiten mit Random Java Basics - Anfänger-Themen 12
J Math.Random Java Basics - Anfänger-Themen 9
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
K Problem mit "Random" Java Basics - Anfänger-Themen 5
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Random(x,y,z) Java Basics - Anfänger-Themen 4
alialhajhossein math.random Java Basics - Anfänger-Themen 3
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
D Wahrscheinlichkeiten mit Math.random() Methode Java Basics - Anfänger-Themen 1
T Random soll Zufallszahl beibehalten. Java Basics - Anfänger-Themen 11
A Random Double mit Math.round() runden? Java Basics - Anfänger-Themen 1
B Math.random mit Boolean array? Java Basics - Anfänger-Themen 17
I math.random Grenzwerte Java Basics - Anfänger-Themen 2
C Arraywerte random vertauschen Java Basics - Anfänger-Themen 2
E Methoden Math.Random() kürzen ? Java Basics - Anfänger-Themen 2
SchmidiMC Methoden Random in Methode neu generieren lassen Java Basics - Anfänger-Themen 1
J Klassen Math && Random: wie zufällig sind Zufallszahlen? Java Basics - Anfänger-Themen 19
J Operatoren Random wird nur einmal erstellt und dann immer verwendet Java Basics - Anfänger-Themen 2
D Erste Schritte Random erzeugen Java Basics - Anfänger-Themen 28
Z Problem mit "Random" in Java Java Basics - Anfänger-Themen 12
Z Array-Index einmalig je mit Random füllen Java Basics - Anfänger-Themen 7
J Wie lege ich eine durch Random ausgesuchte Zahl in ein Array? Java Basics - Anfänger-Themen 3
F Erste Schritte Random Zahl auswählen Java Basics - Anfänger-Themen 7
J Methoden Math.random unklar Java Basics - Anfänger-Themen 4
N java.util.Random - Zwei Zahlen mit festgesetzter Wahrscheinlichkeit? Java Basics - Anfänger-Themen 15
Thorwine Erste Schritte Wuerfelspiel mit Math.random() Java Basics - Anfänger-Themen 10
S Math.random() Zufall ? Java Basics - Anfänger-Themen 2
S Random Plattformen erstellen Java Basics - Anfänger-Themen 7
C Erste Schritte Random Wert auslesen und ausgeben Java Basics - Anfänger-Themen 2
H Ist Math.Random() eine Methode oder ein Methodenaufruf (Klausurfrage) Java Basics - Anfänger-Themen 4
I Random Ergebnis ausgeben und Gewinner ausgeben. Java Basics - Anfänger-Themen 3
I Spieler Name eintragen und Random Gewinner Java Basics - Anfänger-Themen 4
A Random String in TextView (Android)? Java Basics - Anfänger-Themen 2
V Random Java Basics - Anfänger-Themen 2
X Problem mit Math.random() Java Basics - Anfänger-Themen 2
S Random IDs immer 10-stellig? Wie? Java Basics - Anfänger-Themen 5
T Random vs. Math.random() Java Basics - Anfänger-Themen 2
R Schaffe es nicht Random-Programmierung zu vollenden. Wo liegt der Fehler in diesem Code? Java Basics - Anfänger-Themen 13
Y Random-Objekt und Swing Java Basics - Anfänger-Themen 4
B Verstehe ZufallInt = (int) (Math.random() * 5 + 1); nicht Java Basics - Anfänger-Themen 9
K Doppelte namen bei random Java Basics - Anfänger-Themen 3
K Einfacher random namen weitergeben Java Basics - Anfänger-Themen 4
B Hilfe bei Greenfoot ( random blickrichtung + vor(); Java Basics - Anfänger-Themen 10
B Variablen Mehrere Zahlen mit unterschiedlicher Wahrscheinlichkeit mit Random auswählen Java Basics - Anfänger-Themen 17
M Random bereich und for schleife Java Basics - Anfänger-Themen 20
Jagson Dotcom Spiel - Dots Random setzen Java Basics - Anfänger-Themen 8
R java.util.Random Java Basics - Anfänger-Themen 8
T Zufallserzeugung mit math.random und speichern in array Java Basics - Anfänger-Themen 29
J Woher kommt das Objekt "Math" bei Math.random(); ? Java Basics - Anfänger-Themen 3
P Typecasting für Ganzzahlige Zufallszahl (Math.random) Java Basics - Anfänger-Themen 2
I Zwei Mal das selbe Objekt per Random :( Java Basics - Anfänger-Themen 7
E Random Java Basics - Anfänger-Themen 7
Q Random Funktion JButtons Java Basics - Anfänger-Themen 6
E Variable neue Random Zahl zuweisen, wenn Button geklickt Java Basics - Anfänger-Themen 5
J Bedeutung von math.random() math.round() Java Basics - Anfänger-Themen 7
K ArrayList random füllen Java Basics - Anfänger-Themen 2
K random problem Java Basics - Anfänger-Themen 3
F Problem Math.random in for-Schleife Java Basics - Anfänger-Themen 8
R (Math.random()*49) zahl darf aber nur einmal gezogen werden Java Basics - Anfänger-Themen 11
B Random() gleiche Zahlen ausschließen Java Basics - Anfänger-Themen 30
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
C math.random() Java Basics - Anfänger-Themen 9
R math.random wertebereich 16-21 Java Basics - Anfänger-Themen 3
B Math.random und Strings Java Basics - Anfänger-Themen 13
R Java Random Java Basics - Anfänger-Themen 13
G Zahl erstellen / Random Java Basics - Anfänger-Themen 12
J Random Java Basics - Anfänger-Themen 11
radiac Datentypen RANDOM-punkt setzen INNERHALB eines BEREICHes Java Basics - Anfänger-Themen 2
M Zufallszahlen mit Random Java Basics - Anfänger-Themen 4
K Random Zahlen in ein Feld Java Basics - Anfänger-Themen 4
N java.util.Random Java Basics - Anfänger-Themen 6
Luk10 math.random() Java Basics - Anfänger-Themen 2
walker23m Datentypen Zufällig umsortieren einer Hashmap(random?) Java Basics - Anfänger-Themen 3
M Junit TestCase für Random() Zahlen Java Basics - Anfänger-Themen 6
S Random zahlen mit unter und obergrenze Java Basics - Anfänger-Themen 3
D Problem mit Set, Stack und Random Java Basics - Anfänger-Themen 2
S Skatblatt darstellen durch Random? Java Basics - Anfänger-Themen 48
C Bereich festelgen bei Random Java Basics - Anfänger-Themen 9
H Random-Zahlen Java Basics - Anfänger-Themen 7
L Random Sortierung Java Basics - Anfänger-Themen 9
T random-methode Java Basics - Anfänger-Themen 18
M Random in Swing Java Basics - Anfänger-Themen 24
J Math.random() - kurze frage. Java Basics - Anfänger-Themen 20
J Random Wertebereich Java Basics - Anfänger-Themen 2
B Frage zu Random Java Basics - Anfänger-Themen 21
chik klasse random() Java Basics - Anfänger-Themen 6
B Random Zahlen und Formatierung Java Basics - Anfänger-Themen 6
G Random Zahlen Java Basics - Anfänger-Themen 25
S Diashoow Random Java Basics - Anfänger-Themen 4
G Switch-Case harmoniert nicht mit Random-Zahl Java Basics - Anfänger-Themen 3
Spin 4 stellige random zahl erzeugen Java Basics - Anfänger-Themen 4
G random mit tendenz? Java Basics - Anfänger-Themen 8
hedges Würfelwurf mit java.util.Random ohne 0 Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben