Wo ist mein Fehler in diesem Code

Ru$h

Aktives Mitglied
Hallo,

meine Frage ist eigentlich ganz simpel:
ich versuche von die Werte von 3 Arrays zu vergleichen. (Siehe Sysout und Kommentare). Aber meine Konsole bringt mir immer wieder 0 Gleiche Ergebnisse zurück. Wo habe ich einen Fehler gemacht?

public class Wuerfel{

private int zaehler;

public Wuerfel(){
zaehler = 0;
}

public static void main(String[] args){

System.out.println("Würfel 1:");
int zufallszahl1[] = new int[100]; //Erzeuge Array
java.util.Random zufall1 = new Random(); //Erzeuge "Zufallsgenerator"

for (int i = 0; i <= 100; i++)
zufallszahl1[zufall1.nextInt(100)]++; //Erezeuge an jeder Stelle des Array eine Zufallszahl
// for (int i=0;i<100;i++)
// System.out.println("Wurf" + " " + (i+1) + ": " + zufallszahl1);

System.out.println("Würfel 2:");
int zufallszahl2[] = new int[100]; //Erzeuge Array
java.util.Random zufall2 = new Random(); //Erzeuge "Zufallsgenerator"

for (int i = 0; i <= 100; i++)
zufallszahl2[zufall1.nextInt(100)]++; //Erezeuge an jeder Stelle des Array eine Zufallszahl
// for (int i=0;i<100;i++)
// System.out.println("Wurf" + " " + (i+1) + ": " + zufallszahl2);

System.out.println("Würfel 3:");
int zufallszahl3[] = new int[100]; //Erzeuge Array
java.util.Random zufall3 = new Random(); //Erzeuge "Zufallsgenerator"

for (int i = 0; i <= 100; i++)
zufallszahl3[zufall1.nextInt(100)]++; //Erezeuge an jeder Stelle des Array eine Zufallszahl
// for (int i=0;i<100;i++)
// System.out.println("Wurf" + " " + (i+1) + ": " + zufallszahl2);

//Erzeuge 3 Würfel und vergleiche die Wurfzahlen
Wuerfel w1 = new Wuerfel();
w1.gleich(zufallszahl1, zufallszahl2, zufallszahl3);

w1.berechneRelativeHaeufigkeitE(zufallszahl1, zufallszahl2, zufallszahl3);

}

public int getZaehler(){
return zaehler;
}

public void gleich(int[] zufallszahl1, int[] zufallszahl2, int[] zufallszahl3){
// Vergleich der gewürfelten Zahlen
for(int i=0; i<zufallszahl1.length-1;i++){ //Gehe alle Arrays an gewürfelten Zahlen durch
for (int j=0; j <= zufallszahl2.length-1;j++){
for(int l=0; l<=zufallszahl3.length-1;l++)
if(zufallszahl1==zufallszahl2[j]&&zufallszahl2[j]==zufallszahl3[l]){
zaehler++;
} else{ //Ende If-Schleife
zaehler = 0;
} //Ende Else-Anweiseung
} //Ende zweite For-Schleife
} //Ende erste For-Schleife
System.out.println("Würfel 1, 2 und 3 haben" + " " + zaehler + " " + " mal das gleiche gewürfelt");
// Gibt das Ergebnis der Methode aus
}

public void berechneRelativeHaeufigkeitE(int[] zufallszahl1, int[] zufallszahl2,int[] zufallszahl3){
for(int i=0; i<zufallszahl1.length-1;i++){ //Gehe alle Arrays an gewürfelten Zahlen durch
for (int j=0; j <= zufallszahl2.length-1;j++){
for(int l=0; l<=zufallszahl3.length-1;l++)
if(zufallszahl1==zufallszahl2[j]&&zufallszahl2[j]==zufallszahl3[l]){
zaehler++;

}else{ //Ende If-Schleife
zaehler = 0;
} //Ende Else-Anweiseung
}
}
float relativeHaeufigkeit = zaehler/zufallszahl1.length * 100;
System.out.println("Die relative Häufigkeit bei "+zufallszahl1.length+" Würfen, beträgt:"+relativeHaeufigkeit+" "+"Prozent.");
}
 
Ich hab mir mal die Mühe gemacht, deinen Code in Code-Tags zu packen. Achten beim nächsten mal bitte darauf, dass du diese auch nutzt.

Java:
public class Wuerfel {

    private int zaehler;

    public Wuerfel() {
        zaehler = 0;
    }

    public static void main( String[] args ) {

        System.out.println("Würfel 1:");
        int zufallszahl1[] = new int[ 100 ]; //Erzeuge Array
        java.util.Random zufall1 = new Random(); //Erzeuge "Zufallsgenerator"

        for ( int i = 0; i <= 100; i++ ) {
            zufallszahl1[ zufall1.nextInt(100) ]++; //Erezeuge an jeder Stelle des Array eine Zufallszahl
        }


        // for (int i=0;i<100;i++)
        // System.out.println("Wurf" + " " + (i+1) + ": " + zufallszahl1);

        System.out.println("Würfel 2:");
        int zufallszahl2[] = new int[ 100 ]; //Erzeuge Array
        java.util.Random zufall2 = new Random(); //Erzeuge "Zufallsgenerator"

        for ( int i = 0; i <= 100; i++ ) {
            zufallszahl2[ zufall1.nextInt(100) ]++; //Erezeuge an jeder Stelle des Array eine Zufallszahl
        }


        // for (int i=0;i<100;i++)
        // System.out.println("Wurf" + " " + (i+1) + ": " + zufallszahl2);

        System.out.println("Würfel 3:");
        int zufallszahl3[] = new int[ 100 ]; //Erzeuge Array
        java.util.Random zufall3 = new Random(); //Erzeuge "Zufallsgenerator"

        for ( int i = 0; i <= 100; i++ ) {
            zufallszahl3[ zufall1.nextInt(100) ]++; //Erezeuge an jeder Stelle des Array eine Zufallszahl
        }


        // for (int i=0;i<100;i++)
        // System.out.println("Wurf" + " " + (i+1) + ": " + zufallszahl2);

        //Erzeuge 3 Würfel und vergleiche die Wurfzahlen
        Wuerfel w1 = new Wuerfel();
        w1.gleich(zufallszahl1, zufallszahl2, zufallszahl3);

        w1.berechneRelativeHaeufigkeitE(zufallszahl1, zufallszahl2, zufallszahl3);

    }

    public int getZaehler() {
        return zaehler;
    }

    public void gleich( int[] zufallszahl1, int[] zufallszahl2, int[] zufallszahl3 ) {
        // Vergleich der gewürfelten Zahlen
        for ( int i = 0; i < zufallszahl1.length - 1; i++ ) { //Gehe alle Arrays an gewürfelten Zahlen durch
            for ( int j = 0; j <= zufallszahl2.length - 1; j++ ) {
                for ( int l = 0; l <= zufallszahl3.length - 1; l++ ) {
                    if ( zufallszahl1[ i ] == zufallszahl2[ j ] && zufallszahl2[ j ] == zufallszahl3[ l ] ) {
                        zaehler++;
                    } else { //Ende If-Schleife
                        zaehler = 0;
                    } //Ende Else-Anweiseung
                }
            } //Ende zweite For-Schleife
        } //Ende erste For-Schleife
        System.out.println("Würfel 1, 2 und 3 haben" + " " + zaehler + " " + " mal das gleiche gewürfelt");
        // Gibt das Ergebnis der Methode aus
    }

    public void berechneRelativeHaeufigkeitE( int[] zufallszahl1, int[] zufallszahl2, int[] zufallszahl3 ) {
        for ( int i = 0; i < zufallszahl1.length - 1; i++ ) { //Gehe alle Arrays an gewürfelten Zahlen durch
            for ( int j = 0; j <= zufallszahl2.length - 1; j++ ) {
                for ( int l = 0; l <= zufallszahl3.length - 1; l++ ) {
                    if ( zufallszahl1[ i ] == zufallszahl2[ j ] && zufallszahl2[ j ] == zufallszahl3[ l ] ) {
                        zaehler++;
                    } else { //Ende If-Schleife
                        zaehler = 0;
                    } //Ende Else-Anweiseung
                }
            }
        }
        float relativeHaeufigkeit = zaehler / zufallszahl1.length * 100;
        System.out.println("Die relative Häufigkeit bei " + zufallszahl1.length + " Würfen, beträgt:" + relativeHaeufigkeit + " " + "Prozent.");
    }
}

Momentan vergleichst du bei deinen 3 Arrays jedes Element mit jedem. Willst du das wirklich oder willst du immer nur die 3 ersten Elemente, 3 zweiten Elemente, dritten, .. vergleichen.
Außerdem setzt du jedes mal den Zähler wieder auf 0 wenn du einmal kein Paar gefunden hast was übereinstimmt. D.h. dein Zähler wird immer 0 sein außer du hast Glück und beim letzten Durchlauf gibt es eine Übereinstimmung.

Was mir auch noch nicht ganz klar ist, was du mit dieser Zeile erreichen willst.
zufallszahl1[ zufall1.nextInt(100) ]++; //Erezeuge an jeder Stelle des Array eine Zufallszahl
Weißt du was da passiert?

Und BTW:
http://if-schleife.de/ 😉
 
Ja ich möchte immer nur die 3 ersten Elemente, 3 zweiten Elemente, dritten, .. vergleichen
Wie kann ich den Code dafür umändern?
 
Also auch durch löschen der beiden überflüssigen for-Schleifen, wird das Problem nicht besser🙁
Wie muss denn da die for-Schleife aussehen?
Ich stehe gerade komplett vor der Wand.
 

Neue Themen


Zurück
Oben