打印一个 for 循环,Java

Print a for-loop, Java

我正在尝试自学 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);
}
}

这一切都很好,可以做我想做的事。 现在我想用一个方法创建一个构造函数来为我做所有的计数。到目前为止,一切都很好。但是当涉及到打印出来时,输出 returns 一切都是它进行计算的次数。 即,如果我设置 i<5 它打印 1个 2个 3个 4个 5个 6个 五次,不止一次

这是错误的代码: public class 头 { 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++;
}
}
}

有什么帮助吗? 非常感谢您的宝贵时间!

有很多东西。

一个是你的一些代码是不必要的。

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 class.

中的变量 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 是 class(骰子)的一个实例,它不是一个变量。

我让一切正常工作的方法是添加变量 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 class.

访问它
public void saveResults() {
    sa += a;
    sb += b;
    sc += c;
    sd += d;
    se += e;
    sf += f;
}

+=就是加的意思; 我做的最后一件事是使 displayResults 无效。它只是使用 System.out.println();

显示变量 sa-sf
public static void displayResults() {
    System.out.println(sa + " " + sb + " " + sc + " " + sd + " " + se + " " + sf);
}

这一切共同构成了最终产品。这是代码: 头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();
}

} 骰子 class: public class 骰子 { private int a=0, b=0, c=0, d=0, e=0, f=0;
私人静态 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 上有一门课程可以教您基础知识。我推荐它,它是免费的。抱歉 post 这个答案花了很长时间,我花了一段时间才弄清楚哪里出了问题。