我试图自己学习java。我现在正在重做我之前做过的一些程序,但是以不同的方式。 现在我陷入了一个for循环。 我有以下代码:
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<1000; i++){
int dice1 = 1 + (int)(Math.random() * ((6 - 1) + 1));
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++;
}
}
System.out.println("Ones: " + a);
System.out.println("Twos: " + b);
System.out.println("Threes: " + c);
System.out.println("Fours: " + d);
System.out.println("Fives: " + e);
System.out.println("Sixes: " + f);
}
}
这很好用,做我想要的。 现在我想创建一个构造函数,其中包含一个为我完成所有计数的方法。到现在为止还挺好。但是当打印出来时,输出会返回所有计算的次数。 即,如果我设置i&lt; 5它打印 1 2 3 4 五 6 五次,而不仅仅是一次。
这是错误的代码: 公共班长{ 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();
// System.out.println(diceObject);
}
}
}
public class Dice {
private int a=0, b=0, c=0, d=0, e=0, f=0;
private int dice1;
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;
}
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++;
}
}
}
对此有何帮助? 非常感谢你的时间!
答案 0 :(得分:2)
有很多事情。
一个是你的一些代码是不必要的。
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;
}
您不需要注释的代码行,因为它们将重置整数a-f并且已经完成。这也意味着你不需要Head类中的变量a-f。
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();
} }
同样,不需要的代码片段被注释掉了。
接下来就是当你编写代码时
System.out.println(diceObject);
不起作用,因为diceObject是一个类(Dice)的实例而且它不是一个变量。
我让一切工作的方法是添加变量sa,sb,sc,sd,se和sf。
private static int sa = 0, sb = 0, sc = 0, sd = 0, se = 0, sf = 0;
我添加了这些,以便保存每次循环运行时的结果。我创建了一个void来做这个叫做saveResults();变量必须是静态的,因为void也是静态的。我将displayResults设为void(后来我会进入)静态,因此可以从Head类访问它。
public void saveResults() {
sa += a;
sb += b;
sc += c;
sd += d;
se += e;
sf += f;
}
+ =只是意味着要添加; 我做的最后一件事是使displayResults为void。它只使用System.out.println();
显示变量sa-sfpublic static void displayResults() {
System.out.println(sa + " " + sb + " " + sc + " " + sd + " " + se + " " + sf);
}
这一切都在一起制作最终产品。这是代码: 班主任:
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();
}
}
骰子类:
公共课骰子{
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);
} }
我也是java的初学者。巧合的是,有一段时间我试图教给自己。 codecademy.com上有一门课程可以教你基础知识。我推荐它,它是免费的。对不起,发布这个答案花了很长时间,花了一段时间才弄清楚出了什么问题。