There are multiple things.
One is that some of your code is unnecessary.
public Dice(int dice1 /*, int a, int b, int c, int d, int e, int f*/ ){
this.dice1 = dice1;
//this.a = a;
//this.b = b;
//this.c = c;
//this.d = d;
//this.e = e;
//this.f = f;
}
You don’t need the commented lines of code because they will reset the integers a-f and that is already being done. That also means that you don’t need the variables a-f in the Head class.
public class Head {
public static void main(String[] args) {
//int a=0;
//int b=0;
//int c=0;
//int d=0;
//int e=0;
//int f=0;
for(int i=0; i<5; i++){
int dice1 = 1 + (int)(Math.random() * ((6 - 1) + 1));
Dice diceObject = new Dice(dice1 /*, a, b, c, d, e, f*/ );
diceObject.countNumbers();
diceObject.saveResults();
}
System.out.println("A B C D E F");
Dice.displayResults();
} }
Again, the snips of code not needed are commented out.
The next thing is that when you write the code
System.out.println(diceObject);
that doesn’t work because diceObject is an instance of a class (Dice) and it isn’t a variable.
The way I got everything to work was by having the variables sa, sb, sc, sd, se, and sf added.
private static int sa = 0, sb = 0, sc = 0, sd = 0, se = 0, sf = 0;
I added these so that the results from each time the loop runs will be saved. I created a void to do this called saveResults(); The variables had to be static because the void was static too. I made the displayResults void (i’ll get into that later) static so it could be accessed from a the Head class.
public void saveResults() {
sa += a;
sb += b;
sc += c;
sd += d;
se += e;
sf += f;
}
The += just means to add;
The last thing I did was make the displayResults void. It just displays the variables sa-sf using System.out.println();
public static void displayResults() {
System.out.println(sa + " " + sb + " " + sc + " " + sd + " " + se + " " + sf);
}
This all went together to make the final product. Here is the code:
Head class:
public class Head {
public static void main(String[] args) {
for(int i=0; i<5; i++){
int dice1 = 1 + (int)(Math.random() * ((6 - 1) + 1));
Dice diceObject = new Dice(dice1);
diceObject.countNumbers();
diceObject.saveResults();
}
System.out.println("A B C D E F");
Dice.displayResults();
}
}
Dice class:
public class Dice {
private int a=0, b=0, c=0, d=0, e=0, f=0;
private static int sa = 0, sb = 0, sc = 0, sd = 0, se = 0, sf = 0;
private int dice1;
public Dice(int dice1){
this.dice1 = dice1; }
public int getDice1(){
return dice1;
}
public void countNumbers(){
if (dice1 == 1){
a++;
}
else if(dice1 == 2){
b++;
}
else if(dice1 == 3){
c++;
}
else if(dice1 == 4){
d++;
}
else if(dice1 == 5){
e++;
}
else if(dice1 == 6){
f++;
}
}
public void saveResults() {
sa += a;
sb += b;
sc += c;
sd += d;
se += e;
sf += f;
}
public static void displayResults() {
System.out.println(sa + " " + sb + " " + sc + " " + sd + " " + se + " " + sf);
} }
I am a beginner at java too. And a coincidence, for some time I was trying to teach it to myself. There is a course on codecademy.com that teaches you the basics. I recommend it and it is free. Sorry it took long to post this answer, it took a while to figure out what was wrong.
solved Print a for-loop, Java