Würfeln

Status
Nicht offen für weitere Antworten.

java-anfaenger

Aktives Mitglied
Java:
public class Wuerfel
{
   

private int x, y, sum, za, s;
int[]z;

public Wuerfel(){
s=2;
z=new int[s];
za=0;

}

public void wuerfeln(int a, int b){
x=(int)(Math.random()*a)+b;
y=(int)(Math.random()*a)+b;
z[s]=x;z[s+1]=y;
s=s+2;
sum=x+y;
}

public int getWert(){
return sum;
}
public void zaehlen(){
for(int i=0;i<z.length;i++){
    for(int j=0;j>z.length;i++){
         if(z[i]==z[j]){
            za++;
        }
    }if (z[i]!=0){
    System.out.println("Die Zahl: "+z[i]+" kommt "+za+" mal vor");}
    za=0;
            
}
}
}

Ich möchte zahlen, wie oft welche Zahl vorkommt und dann ausgeben - aber es kommt eine arrayoutofbound exception-wo liegen die Fehler?
 

max40

Bekanntes Mitglied
teil uns doch einfach deine Exception mit!
Dazu dann auch die entsprechende Zeilennr!

EDIT: wahrscheinlich in der Methode wurfeln!
du hast ein int[] der größe 2!
beim 2. mal würfeln willst du dir die 3 und 4 zahl merken, das passt natürlich nicht!
 
Zuletzt bearbeitet:
B

bygones

Gast
Java:
public class Wuerfel
{
   

private int x, y, sum, za, s;
int[]z;

public Wuerfel(){
s=2;
z=new int[s];
za=0;

}

public void wuerfeln(int a, int b){
x=(int)(Math.random()*a)+b;
y=(int)(Math.random()*a)+b;
z[s]=x;z[s+1]=y;
s=s+2;
sum=x+y;
}
z ist ein array mit der laenge s - also gibt es weder den eintrag z noch schon gar nicht z[s + 1]... und dann auch nicht noch mehr nachdem du s auch noch erhoehst
 

java-anfaenger

Aktives Mitglied
zeile 10 habe ich jetzt: z=new int[100];
gesetzt

jetzt bekomme ich als Ausgabe:

Die Zahl: 6 kommt 0 mal vor
Die Zahl: 1 kommt 0 mal vor
 

java-anfaenger

Aktives Mitglied
nach mehrmaligen würfeln gibt er mir zwar die Anzahl richtig aus:

Die Zahl: 5 kommt 1 mal vor
Die Zahl: 6 kommt 3 mal vor
Die Zahl: 6 kommt 3 mal vor
Die Zahl: 3 kommt 1 mal vor
Die Zahl: 2 kommt 1 mal vor
Die Zahl: 6 kommt 3 mal vor

aber er gibts es mir auch zb wie bei 6, die schon 3 mal vorkam, 3 mal aus...
 

max40

Bekanntes Mitglied
du willst doch das vorkommen der Zahlen von 1 bis 6 ermitteln!
das sollte wahrscheinlich in der ersten schleife gesteuert werden!
jetzt guck dir an was du in der ersten schleife machst!
 

max40

Bekanntes Mitglied
Java:
public void zaehlen(){
for(int i=1;i<=6;i++){
    for(int j=0;j<z.length;j++){
         if(i==z[j]){
            za++;
        }
    }
    if (za > 0 ){
      System.out.println("Die Zahl: "+ i +" kommt "+za+" mal vor");
    }
    za=0;
            
}
}
so ungefähr
 

java-anfaenger

Aktives Mitglied
alles logo - noch eine Frage: Wenn ich jetzt für a: 6 und für b: 1 eingebe, dann gilt der Wertebereich von 1-6, oder geht der nur von 1-5?
 

max40

Bekanntes Mitglied
Zuletzt bearbeitet:

Painii

Bekanntes Mitglied
Math.random() geht von 0 bis 1 -> dein code macht daraus dann von (0 bis a) + b,
also von b bis a+b (beides inklusive)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben