2017-10-16 20 views
-3

我正在研究类似赌徒的游戏来练习套接字编程,而且我遇到了一个小问题。 我有一个游戏,玩家轮流获得一个随机数。这些数字加在一起就有玩家分数。我正在努力做到这一点,如果你举个例子拉7 - 你不能再得到它。 我一直在试图至今: 编辑:Java - 限制基于较早值的随机结果

private void pick() { 

    Number r = new Number(getNumber(), new Vector2(200, 10)); 
    myNumbers.add(r); 
    sendMessage(output, "Number" + r.value); 
} 

private int getNumber() { 
    int n = random.nextInt(10); 
    while(numberHasBeenPicked(n)) { 
     n = random.nextInt(10); 
    } 

    return n; 

} 

private boolean numberHasBeenPicked(int value) { 
    if(numbersUsed.contains(value)) 
      return true; 
     else 
      return false; 
} 

另外,sendMessage()功能数字相加的numbersUsed在服务器和客户端列表,以便这两个程序知道已采取哪些

/编辑

但我没有得到我要找的结果。我不知道还有什么可说的,因为我得到的错误基本上是我仍然得到已使用的数字,即使我确定它们已被放入numbersUsed列表中。

任何帮助将不胜感激,我很抱歉,如果缺乏信息。

+0

什么是'numbersUsed'? –

+2

你觉得'返回false;'在'else'中做什么?为什么不使用'contains',假设'numbersUsed'是一个'List'?你有没有考虑过使用'HashSet'? –

+0

我不知道包含的方法,谢谢!但问题仍然存在。我将阅读HashSet! –

回答

0

while(!numberHasBeenPicked(n))

你应该删除!因为当条件为真,所以人数已经回升,要挑一个又一个。并通过!你说:当它是错误的数字已被挑选(所以它没有),选择另一个。似乎你想实现相反

+0

如上所述,这个问题现在已经解决了,问题仍然存在,尽管谢谢您的回复! –

0

由于@SotiriosDelimanolis提到最好改变你的程序的设计。您可以将所有生成的值存入ArrayList,同时生成新的随机数字,检查此ArrayList是否包含新号码。你可以用containsAll()

+0

@DennisBjörk然后你可以尝试编辑你的问题 – Russiancold