2017-06-05 99 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。