我们的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());
}
}
}
抱歉格式不佳。我是这个网站的新手。任何帮助将不胜感激。
答案 0 :(得分:1)
您的滚动方法看起来很糟糕。为什么还有多个滚动方法呢?只需要一个返回随机数但不包括边数的那个。
这也错了:
public Die (int sides){
sides = numSides; // this is backwards
face = 0;
setSides();
}
在设置参数而不是字段时,您已经颠倒了边数和数字。
所以相反它是
this.numSides = sides;
您的代码的主要问题是您在创建代码时没有进行一些调试。您需要单独测试每个方法,以确保它有效。
如上所述,TestDie没有理由扩展Die类,并且有很多理由不这样做。