2014-02-18 68 views
0

我們的CS類被分配用來創建一個程序,該程序將兩個java對象導入到一個應該返回一組骰子面值的類中。 Die類生成一個隨機數並將該值打印到屏幕上。 testDie類導入兩個die對象數組,其中一個具有六個邊而另一個具有15個。該程序僅打印具有六個邊的骰子的值(它是骰子btw的數組),並且不打印出其他15個邊的骰子。有人可以向我解釋我做錯了什麼嗎?謝謝。將多個Java對象導入類中?

以下是我的模具類,它生成隨機面值

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

而不是格式不好道歉,看看[格式幫助網站](http://stackoverflow.com/editing-help)。 –

+0

您還錯誤地使用了術語「導入」。在Java中,它特指在另一個包中查找一個類並將其映射到當前文件,以便您可以使用它的短名稱,以便您可以說'import java.util.Map',然後使用'Map' 。 – chrylis

+1

爲什麼TestDie擴展Die? –

回答

1

您的滾動方法看起來有問題。爲什麼有多個滾動方法呢?只要有一個返回一個隨機數,但不包括邊數。


而且這是錯誤的:

public Die (int sides){ 

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

您已經扭轉了雙方VS即numSides爲你設置你的參數不是你的領域。

所以不是很

this.numSides = sides; 

與您的代碼的主要問題是,你沒有做一些調試爲你創造它。您需要單獨測試每種方法以確保其正常工作。


而且如前所述,TestDie沒有理由延長Die類和很多原因不這樣做。

+0

剛剛開始工作。感謝您的更正。 – Robkule424