将多个Java对象导入类中?

时间:2014-02-18 22:40:04

标签: java arrays class object constructor

我们的CS类被分配用于创建一个程序,该程序将两个java对象导入到一个类中,该类应该返回一组骰子的面值。 Die类生成一个随机数并将值打印到屏幕上。 testDie类导入两个die对象数组,其中一个有六个边,另一个有15个。该程序只打印出六个边的骰子的值(它是一个骰子btw的数组)并且不打印出另外的15个边模。有人可以向我解释我做错了什么吗?感谢。

以下是我的Die类,它会生成一个随机面值

import java.util.Random;

public class Die {

            int face;  //current value of the face of the die object
            int numSides; //number of sides of the die object
            Random ran = new Random();
            Random ran2 = new Random();


    public Die(){//default constructor

        int numSides = 0;
        int face = 0;

    }
    public Die (int sides){

        sides = numSides;
        face = 0;
        setSides();
    }

    private void setSides() {
        if(numSides > 6)
            face = roll2();
        if(numSides <= 6)
            face = roll();
    }



    public int getFace(){
        return face;

    }

    public int getNumSides(){

        return numSides;
    }

    public int roll(){

        return face = ran.nextInt(6) +1; //generates a random number between 1 and 6.
    }

    public int roll2(){
        return face = ran2.nextInt(20) + 7; // generates a random number between 7 and 20.
    }

    public String toString(){

        return Integer.toString(face);  
    }


}

此代码创建两个骰子对象并将其打印到屏幕上。

public class TestDie extends Die {

    public static void main(String[] args) {


          Die[] dieobject = new Die[3];

        for (int i=0; i< dieobject.length; i++)
        {
            dieobject[i] = new Die(6); // a die with 6 sides
        }

        for (int i=0; i<dieobject.length; i++) // prints out the 3 dice face values
        {
            System.out.println("The value of die " + (i+1)  + " is " + dieobject[i].toString());
        }


          Die[] dieobject2 = new Die[3];

        for (int i=0; i< dieobject2.length; i++)
        {
            dieobject2[i] = new Die(15); // a die with 15 sides
        }

        for (int i=0; i<dieobject2.length; i++) // prints out the 3 dice face values
        {
            System.out.println("The value of die " + (i+1)  + " is " + dieobject2[i].toString());
        }


    }
}

抱歉格式不佳。我是这个网站的新手。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的滚动方法看起来很糟糕。为什么还有多个滚动方法呢?只需要一个返回随机数但不包括边数的那个。


这也错了:

public Die (int sides){

    sides = numSides;  // this is backwards
    face = 0;
    setSides();
}

在设置参数而不是字段时,您已经颠倒了边数和数字。

所以相反它是

this.numSides = sides;

您的代码的主要问题是您在创建代码时没有进行一些调试。您需要单独测试每个方法,以确保它有效。


如上所述,TestDie没有理由扩展Die类,并且有很多理由不这样做。