打印for循环,Java

时间:2016-02-07 22:44:59

标签: java for-loop output println

我试图自己学习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++;
}
}
}

对此有何帮助? 非常感谢你的时间!

1 个答案:

答案 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来做这个叫做save​​Results();变量必须是静态的,因为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-sf
public 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上有一门课程可以教你基础知识。我推荐它,它是免费的。对不起,发布这个答案花了很长时间,花了一段时间才弄清楚出了什么问题。