2017-06-05 93 views
-2

我是java編程的新手,對於初學者問題非常抱歉。我很確定我忽略了一些簡單的東西,但是我在以前的主題中找不到解決方案。getter總是返回0

我想建立一個對象「computerDraw」。當我創建一個新的「computerDraw」時,我想讓計算機決定他是否從int數組中抽取1,2或3個數字。數字隨機抽出。

繪製的數字應該存儲在變量「computerSumCards」中。

我創建了一個getter來返回computerSumCards,但它每次都返回「0」。我想不出爲什麼。謝謝您的幫助!

public class computerDraw { 
    int computerSumCards; 
    int getAmountOfComputerCards; 
    int randomCard; 
    int draws = 0; 

    private int[] possibleDraws = {1, 2, 3}; 
    int computerCanDraw = (possibleDraws[new Random().nextInt(possibleDraws.length)]); 

    public void drawLoop() { 
      while (draws < computerCanDraw) { 
        int[] cards = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10}; 
        randomCard = (cards[new Random().nextInt(cards.length)]); 
        computerSumCards += randomCard; 

      } 
    } 

    public int getComputerSumCards() { 
      return computerSumCards; 
    } 

    public int getAmountOfComputerCards() { 
      getAmountOfComputerCards = draws; 
      return getAmountOfComputerCards; 
    } 
} 
+0

你叫'drawLoop()'嗎? – Guy

+0

@Guy:不,我沒有,但是我收到了一個錯誤,並發現(在另一個主題中),我無法直接在類體中循環設置。我仍然試圖弄清楚。這與這個問題有關嗎?我認爲還有一個不同的問題。 – BjornsBot

+0

我也想知道爲什麼這個問題得到了downvotes。我事先做了研究,並試圖整合/重新編譯和執行。如果我在做/提出錯誤的問題,請解釋,以便在提出未來問題時避免它。謝謝。 – BjornsBot

回答

1

該課程不會「忽略」while循環。該循環在方法drawLoop()中。如果你想讓它運行,你需要調用它明確

computerDraw draw = new computerDraw(); 
draw.drawLoop(); 

作爲一個側面說明,類名以資本以後。 computerDraw應該是ComputerDraw

+0

調用draw.drawLoop();爲我工作,我忘了!謝謝!還要感謝命名提示 - 初學者錯誤:-) – BjornsBot

2

你不改變draws值的任何地方,getAmountOfComputerCards = draws;在這一點上,你總是分配0

computerSumCards += randomCard;添加draws++;,它應該是罰款。沒有它你會得到無限循環。

+0

感謝您的建議,我立即修復了這個問題。但問題是getter「getComputerSumCards()」返回0,而不應該。任何想法爲什麼會發生? – BjornsBot

+0

@BjornsBot它對我來說工作正常,添加到代碼中,我提到並首先調用'drawLoop()'方法,並在該getter之後。 –

+0

感謝通過調用drawLoop()方法解決它。 – BjornsBot

0

我也還是新的,但試試這個:

public int drawLoop() { 
     while (draws < computerCanDraw) { 
       int[] cards = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10}; 
       randomCard = (cards[new Random().nextInt(cards.length)]); 
       computerSumCards += randomCard; 

     } 
     return computerSumCards; 
} 

public int getComputerSumCards() { 
     return drawLoop(); 
} 
0

你需要調用draw.drawLoop();但即使你調用while循環進入無限循環。繪圖和computerCanDraw值永遠不會發生變化,並且繪圖始終保持< computerCanDraw值。您應該更改繪製值或正確實現computerCanDraw。