Zählerschleife

jonasvi

Mitglied
Guten Morgen ;D

ich hätte da eine Frage.
Will schon vorwegnehmen, dass ich ein Java Anfänger bin ;D (Studiere Mathe, haben aber immer 1 Info Modul)

Wir sollen in ein ,von unseren Professor entwickeltes, Programm ein Würfel konstruieren und nebenbei sollen die Häufigkeiten der gewürfelten Zahlen gezählt und ausgegeben werden.
Sprich: Ich würfel 1 => Zahl 1 = 0 + 1 = 1
Ich würfel 1 => Zahl 1 = 1 + 1 = 2
usw.

Ich habe das ganze mit und ohne Arrays versucht - leider ohne Erfolg.

Hier der Code mit dem Array-Versuch ( ab "/*der Zähler, der nicht funktioniert*/" das Problem):
Code:
int b=(int)(6*Math.random()+1);
groesse(7,2);
System.out.println(b);

/*Würfel ändert Augenzahl im Programm*/
switch(b){
   case 1: form(0, "d1"); break;
   case 2: form(0, "d2"); break;
   case 3: form(0, "d3"); break;
   case 4: form(0, "d4"); break;
   case 5: form(0, "d5"); break;
   case 6: form(0, "d6"); break;
}

/*der Zähler, der nicht funktioniert*/
int feld[]; feld = new int[6];
int zählerone=0;
int zählertwo=0;
int zählerthree=0;
int zählerfour=0;
int zählerfive=0;
int zählersix=0;
if (b<2){
   feld[0] =zählerone+1;
   System.out.println( Arrays.toString( feld ));
} else if (b<3){
   feld[1] =zählertwo+1;
   System.out.println( Arrays.toString( feld ));
} else if (b<4){
   feld[2]=zählerthree+1;
   System.out.println( Arrays.toString( feld ));
} else if (b<5){
   feld[3]=zählerfour+1;
   System.out.println( Arrays.toString( feld ));
} else if (b<6){
   feld[4]=zählerfive+1;
   System.out.println( Arrays.toString( feld ));
} else if (b<7){
   feld[5]=zählersix+1;
   System.out.println( Arrays.toString( feld ));
}
So sieht das ganze im Programm aus:
http://www.myimg.de/?img=bildjava9e134.jpg
Meine Vorstellung war es, dass der dann z.B. bei der 4 die Zwischenwerte immer speichert und immer +1 hochzählt und annimmt, wenn gewürfelt wurde.
Ich denke mein Problem ist es, dass die Variable nicht dynamisch ist.
Also die initialisierten Werte int zählerone=0; etc. verändern sich leider nicht und ich weiß auch nicht,
wie man das beheben soll.


Ohne Arrays hat es genauso gespackt.
Vielleicht ist meine Idee vom Ansatz her falsch. Ich hoffe ich habe das Problem ausführlich genug geschildert und bin für jeden Ansatz und jede Hilfe sehr dankbar ;D

Mit freundlichen Grüßen,
jonas
 

knilch

Bekanntes Mitglied
Hi,
Leider kann aus dem Code-Snippet nicht genau erkannt werden, wie dies abläuft.
Nur mal: Du schreibst:
Java:
...
int zählerone=0;
int zählertwo=0;
...
Dann später:
Java:
...
feld[0] =zählerone+1;
...
feld[1] =zählertwo+1;
...
das heisst, jedes mal wenn dieser Code ausgeführt wird, wird zählerone, zählertwo etc. 0 sein. So erhälst du immer 1 oder 0 als resultat.
Für deinen Fall musst du das Array feld, in dem du die Ergebisse der Würfel Bilder ablegen möchtest, als Klassenvariable erstellen.
Aber so ohne genau zu sehen, wie du das Programm aufgebaut ist, (ohne Klassen und Methoden) ist es nicht einfach zu sagen, wo genau du das machen musst.
 

Cromewell

Top Contributor
Ich habe mal schnell was geschrieben - kannst es dir ja angucken ^^:
Java:
int  tries = 10;
int counter = 0;
int[] results = new int[]{0, 0, 0, 0, 0, 0};
Random random = new Random();

while(counter < tries){
    int value = random.nextInt(6)+1;
    switch (value){
        case 1: results[0]++; break;
        case 2: results[1]++; break;
        case 3: results[2]++; break;
        case 4: results[3]++; break;
        case 5: results[4]++; break;
        case 6: results[5]++; break;
    }
    counter++;
}
for(int i = 0; i < results.length; i++){
    System.out.println(i+1+": "+results[i]);
}
 

jonasvi

Mitglied
Vielen Dank!
Habe es jetzt spaßeshalber auch ohne case-Anweisung geschrieben und es funktioniert.

Hoffentlich kommt das präzise (!) logische Denken mit der Zeit noch ;D

Schönen Tag noch.
 

Neue Themen


Oben