【问题标题】:Importing more than one Java object into a class?将多个 Java 对象导入到一个类中?
【发布时间】:2014-02-18 22:40:04
【问题描述】:

我们的 CS 类被分配来编写一个程序,该程序将两个 java 对象导入到一个应该返回一组骰子的面值的类中。 Die 类生成一个随机数并将该值打印到屏幕上。 testDie 类导入两个骰子对象数组,其中一个有 6 面,另一个有 15 面。程序只打印出 6 面骰子的值(顺便说一句,它是骰子数组),不打印其他 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());
        }


    }
}

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

【问题讨论】:

  • 与其为糟糕的格式道歉,不如看看formatting help site
  • 您还错误地使用了“导入”一词。在Java中,它特指在另一个包中找到一个类,并将其映射到当前文件,这样就可以使用它的短名称,这样就可以说import java.util.Map,之后就可以使用Map了。
  • TestDie 为什么要扩展 Die?
  • return face = ran2.nextInt(20) + 7; // generates a random number between 7 and 20

标签: java arrays class object constructor


【解决方案1】:

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


这也是错误的:

public Die (int sides){

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

当您设置参数而不是字段时,您已经反转了边与 numSides。

所以它是

this.numSides = sides;

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


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2017-03-27
    • 2016-12-18
    • 2021-11-13
    相关资源
    最近更新 更多