Augensumme bei Würfeln

eclipseworker

Bekanntes Mitglied
Ich habe geschaut ob es ein ähnliches Thema schon gibt und nichts gefunden.
Nun ich habe einen Würfelsimulator bestehend aus zwei Klassen (Experiment und Zufallszahl):
Java:
import java.util.*;
public class Experiment
{

    private Zufallszahl wuerfel;

    public Experiment () {
        wuerfel = new Zufallszahl();
    }

    public void anzahlWuerfe(int anzahl){
        int i = 1;
        int[] summe = new int[anzahl];
        ArrayList<Zufallszahl> wuerfel = new ArrayList<Zufallszahl>();
        while (i <= anzahl){
            Zufallszahl wuerfelzahl = new Zufallszahl();
            wuerfel.add(wuerfelzahl );
            System.out.println("Wurf Nummer " +i+ " hat die Zahl " + wuerfel.get(i-1).getZufallszahl());
            summe[i-1]=wuerfel.get(i-1).getZufallszahl();
            i++;
        }
        int summe2=0;
        for( int j=0; j<summe.length; j++){
            summe2+=summe[j];
        }
        System.out.println("Die Totale Augenzahl betraegt "+summe);
    }


    public void wuerfelnBisSechs(){
        anzahlWuerfe(6); 
    }
}
Java:
public class Zufallszahl {
    private int zufallszahl;
    public Zufallszahl(){
        zufallszahl=getZufallszahl(6);
    }

    public int getZufallszahl(){
        return zufallszahl;
    }

    private int getZufallszahl(int maxium)
    {
        return (int) (Math.random() * maxium+1);
    }
}
Und die Summe auszurechnen funktioniert nicht:
Die Ausgabe für wuerfelnBisSechs() ist:
Wurf Nummer 1 hat die Zahl 2
Wurf Nummer 2 hat die Zahl 1
Wurf Nummer 3 hat die Zahl 5
Wurf Nummer 4 hat die Zahl 6
Wurf Nummer 5 hat die Zahl 1
Wurf Nummer 6 hat die Zahl 2
Die Totale Augenzahl betraegt [I@1ff82982
Warum ist die Summe so krumm geworden?
 
B

bygones

Gast
das ist die default toString methode eines Objektes...

nutz [c]Arrays.toString(summe)[/c]
 

Michael...

Top Contributor
Java:
    public void anzahlWuerfe(int anzahl){
        int i = 1;
        int[] summe = new int[anzahl];
        ArrayList<Zufallszahl> wuerfel = new ArrayList<Zufallszahl>();
        while (i <= anzahl){
            Zufallszahl wuerfelzahl = new Zufallszahl();
            wuerfel.add(wuerfelzahl );
            System.out.println("Wurf Nummer " +i+ " hat die Zahl " + wuerfel.get(i-1).getZufallszahl());
            summe[i-1]=wuerfel.get(i-1).getZufallszahl();
            i++;
        }
        int summe2=0;
        for( int j=0; j<summe.length; j++){
            summe2+=summe[j];
        }
        System.out.println("Die Totale Augenzahl betraegt "+summe);
    }
... denn sie wissen nicht was sie tun...

Wie kommst Du auf den Code?
Zufallszahl ist doch eine Klasse die einen Würfel simulieren soll. Jeder Aufruf von getZufallszahl() an einem Objekt der Klasse liefert eine neue Zahl.
Daher ist die List
Code:
wuerfel
und das mehrfache Erzeugen eines Objekts vom Typ Zufallszahl völlig überflüssig. Es werden Zahlen im int Array
Code:
summe
gespeichert. In
Code:
summe2
werden die Werte aus
Code:
summe
aufsummiert und am Ende wird
Code:
summe
ausgeben.
Ich muss mich da zwangsläufig fragen: Schaust Du Dir den Code auch an, wenn Du merkst, dass etwas nicht so funktioniert wie gedacht?
 

eclipseworker

Bekanntes Mitglied
... denn sie wissen nicht was sie tun...

Wie kommst Du auf den Code?
Zufallszahl ist doch eine Klasse die einen Würfel simulieren soll. Jeder Aufruf von getZufallszahl() an einem Objekt der Klasse liefert eine neue Zahl.
Daher ist die List
Code:
wuerfel
und das mehrfache Erzeugen eines Objekts vom Typ Zufallszahl völlig überflüssig. Es werden Zahlen im int Array
Code:
summe
gespeichert. In
Code:
summe2
werden die Werte aus
Code:
summe
aufsummiert und am Ende wird
Code:
summe
ausgeben.
Ich muss mich da zwangsläufig fragen: Schaust Du Dir den Code auch an, wenn Du merkst, dass etwas nicht so funktioniert wie gedacht?

Um die Frage zu beantworten ja ich schaue den Code an nur du weist ja wie das ist eigene Fehler übersieht man. Nur um das klar zustellen seit ich summe2 ausgebe geht es gut. Und ich rufe hier
Code:
getZufallszahl()
auf und das ist nicht
Code:
getZufallszahl(int maxium)
und liefert daher auch nicht immer eine neue Zahl sondern eine Konstante.
 

Ähnliche Java Themen


Oben