Zufallszahl (Statische Attribute und Methoden)

sengul

Bekanntes Mitglied
Hallo zusammen,
ich habe folgende aufgabe versucht zu lösen. Nun möchte ich aber gerne eure meinung dazu hören, ob ich es richtig gemacht habe, da ich meine java kenntnisse verbessern möchte, bin ich dankbar für Kritik und für andere lösungsvorschlage. Ich hoffe dass ich die Aufgabe richtig verstandan, den ich weiss nicht wo ich den Math.round() benutzen soll. Unten findet ihr die Aufgabe und meine lösung.

Aufgabe: Zufallszahl (Statische Attribute und Methoden)
Schreiben Sie eine Klasse Zufallszahl mit folgenden Eigenschaften:
– Jedes neu erzeugte Objekt dieser Klasse erhält eine eindeutige fortlaufende Nummer und berechnet bei der Initialisierung automatisch eine Zufallszahl zwischen 0 (einschließlich) und 100 (ausschließlich).
Hinweis: Sie können die Methoden Math.random() zur Erzeugung der Zufallszahl und Math.round() zur Rundung verwenden. Die Beschreibung der Methoden finden Sie in der Java-API-Spezifikation.
– Sowohl die fortlaufende Nummer als auch die berechnete Zufallszahl sollen anschließend nicht mehr verändert werden können. Die Werte sollen aber über entsprechende Methoden abgefragt werden können.
– Es soll es weiterhin möglich sein, die Gesamtzahl der erzeugten Zufallszahlen sowie das Zufallszahl-Objekt, das die höchste Zufallszahl speichert, abzufragen.​
Schreiben Sie ein Hauptprogramm, das mehrere Zufallszahlen erzeugt und anschließend die Zufallszahlen, die Anzahl der erzeugten Zufallszahlen und die größte erzeugte Zufallszahl ausgibt.

Klasse Zufallszahl
Java:
package ubungsblatt;

import java.util.Random;

public class Zufallszahl {

    public final int nummer;
    public final int randomNumber;
    private static int count;

    public Zufallszahl(int nummer) {
        count++;
        this.nummer = nummer;
        Random random = new Random();
        int randomNumber = random.nextInt(100);
        this.randomNumber = randomNumber;
    }

    public int getNummer() {
        return nummer;
    }

    public int getRandomNumber() {
        return randomNumber;
    }

    public static int getCount() {
        return count;
    }

    public static int groesteZahl(Zufallszahl... params) {
        int max = 0;

        for (Zufallszahl o : params) {
            if (max < o.getRandomNumber()) {
                max = o.getRandomNumber();
            }
        }
        return max;
    }

    public static Zufallszahl groesteZufallsObjekt(int max, Zufallszahl... params) {
        Zufallszahl p = null;
        for (Zufallszahl o : params) {
            if (max == o.getRandomNumber()) {
                p = o;
            }
        }
        return p;
    }

    public static void main(String[] args) {

        Zufallszahl z = null;
        int max = 0;
        Zufallszahl z1 = new Zufallszahl(18823678);
        Zufallszahl z2 = new Zufallszahl(74387473);
        Zufallszahl z3 = new Zufallszahl(672);
        Zufallszahl z4 = new Zufallszahl(4938872);
        Zufallszahl z5 = new Zufallszahl(827266600);

        System.out.println("Zufalszahl:\t" + z1.getRandomNumber());
        System.out.println("Zufalszahl:\t" + z2.getRandomNumber());
        System.out.println("Zufalszahl:\t" + z3.getRandomNumber());
        System.out.println("Zufalszahl:\t" + z4.getRandomNumber());
        System.out.println("Zufalszahl:\t" + z5.getRandomNumber());
        System.out.println();
        System.out.println("Zufalszahl:\t" + z1.getNummer());
        System.out.println("Zufalszahl:\t" + z2.getNummer());
        System.out.println("Zufalszahl:\t" + z3.getNummer());
        System.out.println("Zufalszahl:\t" + z4.getNummer());
        System.out.println("Zufalszahl:\t" + z5.getNummer());
        System.out.println();
        System.out.println("Anzahl der erzeugten objecte:\t" + getCount());
        max = groesteZahl(z1, z2, z3, z4, z5);
        System.out.println("Grösste Zufallszahl:\t" + max);
        z = groesteZufallsObjekt(max, z1, z2, z3, z4, z5);
        System.out.println("Nummer des Objects mit dem grössten Zufallszahl:\t" + z.getNummer());
    }
}
 

Viktim

Bekanntes Mitglied
Sowohl die fortlaufende Nummer als auch die berechnete Zufallszahl sollen anschließend nicht mehr verändert werden können.
Bei deinem 'count' fehlt ein 'final'

– Es soll es weiterhin möglich sein, die Gesamtzahl der erzeugten Zufallszahlen sowie das Zufallszahl-Objekt, das die höchste Zufallszahl speichert, abzufragen.
hast du ja hiermit:
Java:
Zufallszahl z1 = new Zufallszahl(18823678);
        Zufallszahl z2 = new Zufallszahl(74387473);
        Zufallszahl z3 = new Zufallszahl(672);
        Zufallszahl z4 = new Zufallszahl(4938872);
        Zufallszahl z5 = new Zufallszahl(827266600);

        System.out.println("Zufalszahl:\t" + z1.getRandomNumber());
        System.out.println("Zufalszahl:\t" + z2.getRandomNumber());
        System.out.println("Zufalszahl:\t" + z3.getRandomNumber());
        System.out.println("Zufalszahl:\t" + z4.getRandomNumber());
        System.out.println("Zufalszahl:\t" + z5.getRandomNumber());
        System.out.println();
        System.out.println("Zufalszahl:\t" + z1.getNummer());
        System.out.println("Zufalszahl:\t" + z2.getNummer());
        System.out.println("Zufalszahl:\t" + z3.getNummer());
        System.out.println("Zufalszahl:\t" + z4.getNummer());
        System.out.println("Zufalszahl:\t" + z5.getNummer());
        System.out.println();
        System.out.println("Anzahl der erzeugten objecte:\t" + getCount());
        max = groesteZahl(z1, z2, z3, z4, z5);
        System.out.println("Grösste Zufallszahl:\t" + max);
        z = groesteZufallsObjekt(max, z1, z2, z3, z4, z5);
        System.out.println("Nummer des Objects mit dem grössten Zufallszahl:\t" + z.getNummer());

prinzipiell gelößt, allerdings würde ich die Zufallszahlen in ein Array oder eine Liste tun und dann mit schleifen durchgehen.
 

X5-599

Top Contributor
doch schon. ich würde sagen, nur der Konstruktor mit Parameter nummer könnte weg. Davon lese ch nichts in der Aufgabe. Stattdessen würde ich nach dem count++ einfach this.nummer = count; machen. Somit hat die Instanz eine Nummer bekommen die nicht mehr verändert werden kann, weil kein setter oder ähnliches vorhanden ist.
 

X5-599

Top Contributor
Mit "Konstruktor könnte weg" meine ich natürlich nur den Parameter. Ein Parameterloser Konstruktor würde hierfür reichen.
 

sengul

Bekanntes Mitglied
Ich habe es mit this.nummer = count; gemacht, klappt wunderbar, jetzt haben die Objekte eine fortlaufende nummer, dankeschön
 

sengul

Bekanntes Mitglied
Hallo Viktim, das mit List und array habe ich auch gemacht. Aber ich würde es gerne nochmal machen als übung. So würde ich vorgehen, also ich würde erst alle erzeugten Objecte in ein List einfügen und diesen list als parameter an die methode übergeben, und dann einen Iterator erzeugen und mit dem Iterator dann den list durchlaufen. So sollte ich es machen oder? Ich mache es jetzt mal
 

sengul

Bekanntes Mitglied
mit dem Iterator habe ich es doch noch gelassen. Die grösste Zufalszahl habe ich noch auf dieser weise herausbekommen
Java:
List<Integer> list = new ArrayList<>();
        list.add(z1.getRandomNumber());
        list.add(z2.getRandomNumber());
        list.add(z3.getRandomNumber());
        list.add(z4.getRandomNumber());
        list.add(z5.getRandomNumber());
        list.add(z6.getRandomNumber());
System.out.println("Grösste Zufallszahl:\t" + grosteZahl(list));
......
.....

.....
    public static int grosteZahl(List<Integer> list) {
        int x = Collections.max(list);
        return x;
    }

Ist es so okey?
Hat jemand ein anderen vorschalg?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb Immer dieselbe Zufallszahl Java Basics - Anfänger-Themen 4
M Zufallszahl generieren mit einer linken und rechten Grenze Java Basics - Anfänger-Themen 3
J for Schleife kleinste Zufallszahl finden Java Basics - Anfänger-Themen 25
S Zufallszahl mit Wahrscheinlichkeit Java Basics - Anfänger-Themen 13
brypa Zufallszahl Java Basics - Anfänger-Themen 9
C Zufallszahl + Werte bereich einstellen Java Basics - Anfänger-Themen 2
N Bereich Zufallszahl bestimmen (50 und 100 / 80 und 90) Java Basics - Anfänger-Themen 2
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
E Zufallszahl mit Wahrscheinlichkeit Java Basics - Anfänger-Themen 4
T Random soll Zufallszahl beibehalten. Java Basics - Anfänger-Themen 11
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
D Zufallszahl zwischen 10 und 99? Java Basics - Anfänger-Themen 5
M Vierstellige Zufallszahl Java Basics - Anfänger-Themen 3
B Methoden Per Buttonklick eine Zufallszahl in ein Numberfield geben Java Basics - Anfänger-Themen 2
S Zufallszahl-Generatoren (Schnittstellen) Java Basics - Anfänger-Themen 14
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
N Zufallszahl beim Eintragen Java Basics - Anfänger-Themen 2
B Methoden Die Sache Mit der Zufallszahl Java Basics - Anfänger-Themen 3
I immer die gleiche Zufallszahl Java Basics - Anfänger-Themen 9
F Zufallszahl ohne Wiederholung Java Basics - Anfänger-Themen 7
R Zufallszahl Java Basics - Anfänger-Themen 5
P Typecasting für Ganzzahlige Zufallszahl (Math.random) Java Basics - Anfänger-Themen 2
S Zufallszahl erzeugen in 50er Schritten Java Basics - Anfänger-Themen 2
S Gerade bzw. Ungerade Zufallszahl generieren Java Basics - Anfänger-Themen 5
P Erste Schritte Zufallszahl in Ascii-Code umwandeln ?!? Java Basics - Anfänger-Themen 6
M Exception bei Zufallszahl Java Basics - Anfänger-Themen 15
M neue Zufallszahl in Schleife Java Basics - Anfänger-Themen 2
TheKing Zufallszahl die man durch 15 dividieren kann Java Basics - Anfänger-Themen 6
Luk10 Zufallszahl "ohne" eine bestimmte Zahl(en) Java Basics - Anfänger-Themen 8
N zufallszahl Java Basics - Anfänger-Themen 3
D Java Zufallszahl Java Basics - Anfänger-Themen 5
N Zufallszahl Java Basics - Anfänger-Themen 2
A Eingabe und Zufallszahl Java Basics - Anfänger-Themen 12
S Zufallszahl -> Schleife Java Basics - Anfänger-Themen 10
TheKing ZufallsZahl im negativbereich Java Basics - Anfänger-Themen 2
S Zufallszahl mit 6 Stellen erzeugen Java Basics - Anfänger-Themen 4
D bei Zufallszahl immer 2 Java Basics - Anfänger-Themen 12
K Zufallszahl Java Basics - Anfänger-Themen 4
Z Alle 15 sek eine Zufallszahl auf Bildschirm Java Basics - Anfänger-Themen 10
M Zufallszahl - kleine Frage Java Basics - Anfänger-Themen 4
S Zufallszahl Java Basics - Anfänger-Themen 9
I Zufallszahl ziwschen 0 und 7 Java Basics - Anfänger-Themen 3
F Zufallszahl in einem bestimmten Intervall Java Basics - Anfänger-Themen 9
B Befehl zum erstellen einer Zufallszahl. Java Basics - Anfänger-Themen 8
S 4-stellige Zufallszahl Java Basics - Anfänger-Themen 4
P Methode funzt nicht => Zufallszahl darf nicht 2x erschein Java Basics - Anfänger-Themen 4
M zufallszahl ohne doppelvorkommen Java Basics - Anfänger-Themen 2
H Zufallszahl Java Basics - Anfänger-Themen 2
K [Java] Zufallszahl als ganze Zahl Java Basics - Anfänger-Themen 5
G Zufallszahl zwischen 2 und n Java Basics - Anfänger-Themen 10
R Zufallszahl random Java Basics - Anfänger-Themen 8
E zufallszahl zwischen 1 und 6 Java Basics - Anfänger-Themen 6
J eigene methode erstellen die eine Zufallszahl generiert. Java Basics - Anfänger-Themen 12
J Zufallszahl ohne Math.random Java Basics - Anfänger-Themen 4
S Spiel: Wer ist näher an der Zufallszahl? Java Basics - Anfänger-Themen 4
N Überprüfung der ZufallsZahl? Java Basics - Anfänger-Themen 2
S Zufallszahl ermitteln Java Basics - Anfänger-Themen 2
C Zufallszahl zwischen... Java Basics - Anfänger-Themen 10
H zufallszahl Java Basics - Anfänger-Themen 2
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
C nicht statische Methoden Java Basics - Anfänger-Themen 4
D statische generische Methoden Java Basics - Anfänger-Themen 3
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
N Auf statische Methode zugreufen Java Basics - Anfänger-Themen 9
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Statische Klasse => Flaschenhals? Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
E statische Variable ändert sich Java Basics - Anfänger-Themen 7
A Statische Variable in Methoden Java Basics - Anfänger-Themen 7
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
A Nicht-statische Methode in einer statischen aufrufen Java Basics - Anfänger-Themen 10
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
A statische Arraylist Java Basics - Anfänger-Themen 6
Q Variablen Statische Variablen Java Basics - Anfänger-Themen 8
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
V OOP Statische Klassen-Attribute vererben Java Basics - Anfänger-Themen 4
K Statische Bindung Java Basics - Anfänger-Themen 6
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
S statische Methode nebenläufig Java Basics - Anfänger-Themen 2
R Aufruf statische Methode Java Basics - Anfänger-Themen 7
M Statische Methoden Java Basics - Anfänger-Themen 22
C Relativer Pfad - Statische Methode Java Basics - Anfänger-Themen 6
A Statische Methode "vererben" - Zwang durch annotation processor Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben