Hallo.. bin neu hier und absoluter anfänger in sachen Java.
Nun zu meinem Problem ich soll eine methode schreiben welche per random funktion ganze zahlen zwischen 1 und 6 erzeugt (also n Würfel) und das ganze n mal. soweit kein problem. Nun soll ich aber per switch case konstrukt zählen wie oft bei n "würfen" die zahlen jeweils vorkommen (also die absolute häufigkeit der einzelnen Zahlen). Die Schleife läuft, nun hab ich aber n komplettes Brett vorm Kopf wie ich das mit switch case Zählen soll. Es muss ja irgendwie innerhalb der Schleife passieren und soll bei jedes mal wenn der case 1-6 wahr ist eins addieren. Kann mir jemand helfen das Umzusetzen? Hier mal das was ich bisher geschrieben habe:
Code:
public static void wuerfel(String[] args) throws IOException {
int wuerfe, zufall, i;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader eingabe = new BufferedReader(isr);
System.out.println();
System.out.println();
System.out.print(" Bitte anzahl der Wuerfe eingeben: ");
wuerfe=Integer.valueOf(eingabe.readLine()).intValue();
for (i = 1; i <= wuerfe; i++){
zufall = 1 + (int)(Math.random() * 6);
switch (zufall){
case 1: ??? ;
case 2: ???;
...
}//end switch
}//end for schleife
}//end wuerfel
Hoffe ich hab mich einigermaßen verständlich ausgedrückt und jemand kann mir helfen.
Das switch/case nicht unbedingt eine saubere Lösung für das Problem ist erkennst du schon daran, das du nicht mehr auf die Idee kommen würde wenn dein Würfel statt 6 nun 600 Seiten hätte :wink:
Ich empfehle dir eine HashMap zu verwenden.
Die Augenzahl wird der key, die Häufigkeit der Value.
Ja das hab ich mir fast gedacht das die Lösung mit switch /case nicht die ideal ist. Leider dient die ganze Aufgabe dazu den Umgang mit switch/case zu üben. Also es wird explizit verlangt das damit zu machen.
Aber schonmal danke für die schnelle Antwort.. is ja der Wahnsinn wie schnell man hier geholfen wird :toll:
Ach so, dann bleibt dir wohl nichts anderes übrig.
Scheitert es konkret an der Syntax des Statements, oder an der Logik die du in den einzelnen Cases hinterlegen musst?
Am einfachsten geht es wohl mit mit einem int[] oder 6 ints in denen du dir die Häufigkeiten speicherst.
ehlich gesagt scheiterts an beidem ???:L also ich hab mir das so gedacht das ich 6 variablen definiere bsp. abcdef und mach dann case 1: a++;
Hab damit auch schon experimentiiert, hat aber nich funktioniert.. wahrscheinlich weil die variablen weiter oben definiert habe, und die dann im anweisungsblock nich mehr sichtbar sind. keine ahnung.
Ja hm schon klar.. also ich habs nochmal probiert. hab aber irgdenwie immer noch n Brett vorm kopf. Wenn ich die Variablen ausserhalb der schleife initialisiere werden se in der schleife nicht erkannt. aber wenn ich se in der schliefe initialisiere (also hab se auf null gesetzt) werden se ja immer wieder null.
Code:
public static void wuerfel(String[] args) throws IOException {
int wuerfe, zufall, i;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader eingabe = new BufferedReader(isr);
System.out.println();
System.out.println();
System.out.print(" Bitte anzahl der Wuerfe eingeben: ");
wuerfe=Integer.valueOf(eingabe.readLine()).intValue();
for (i = 1; i <= wuerfe; i++){
int a, b, c, d, e, f;
zufall = 1 + (int)(Math.random() * 6);
switch (zufall){
case 1: a++; break;
case 2: b++; break;
case 3: c++; break;
case 4: d++; break;
case 5: e++; break;
case 6: f++; break;
}//end switch
System.out.println("Eins"+ a);
System.out.println("Zwei" + b);
System.out.println("Drei"+ c);
System.out.println("Vier" + d);
System.out.println("Fünf"+ e);
System.out.println("Sechs" + f);
}//end for schleife
boah wie doof kann ich sein? Hatte vorhin die Variablen schon ausserhalb der schleife deklariert, aber nicht auf null gesetzt... hat natürlich nicht getan. Dann innerhalb der Schleife und diesmal richtig. Hat aber natürlich nicht getan :lol:
Naja wie gesagt bin absoluter Anfänger und sitz auch schon den ganzen tag vorm Rechner *Brettvormkopf*
So tuts:
Code:
public static void wuerfel(String[] args) throws IOException {
int wuerfe, zufall, i, a=0, b=0, c=0, d=0, e=0, f=0;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader eingabe = new BufferedReader(isr);
System.out.println();
System.out.println();
System.out.print(" Bitte anzahl der Wuerfe eingeben: ");
wuerfe=Integer.valueOf(eingabe.readLine()).intValue();
for (i = 1; i <= wuerfe; i++){
zufall = 1 + (int)(Math.random() * 6);
switch (zufall){
case 1: a++; break;
case 2: b++; break;
case 3: c++; break;
case 4: d++; break;
case 5: e++; break;
case 6: f++; break;
}//end switch
}//end for schleife
System.out.println();
System.out.println();
System.out.println("Eins : "+ a);
System.out.println("Zwei : " + b);
System.out.println("Drei : "+ c);
System.out.println("Vier : " + d);
System.out.println("Fuenf : "+ e);
System.out.println("Sechs : " + f);
}//end wuerfel