Java - 限制基于较早值的随机结果
我正在研究类似赌徒的游戏来练习套接字编程,而且我遇到了一个小问题。 我有一个游戏,玩家轮流获得一个随机数。这些数字加在一起就有玩家分数。我正在努力做到这一点,如果你举个例子拉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
列表中。
任何帮助将不胜感激,我很抱歉,如果缺乏信息。
while(!numberHasBeenPicked(n))
你应该删除!
因为当条件为真,所以人数已经回升,要挑一个又一个。并通过!
你说:当它是错误的数字已被挑选(所以它没有),选择另一个。似乎你想实现相反
如上所述,这个问题现在已经解决了,问题仍然存在,尽管谢谢您的回复! –
由于@SotiriosDelimanolis提到最好改变你的程序的设计。您可以将所有生成的值存入ArrayList
,同时生成新的随机数字,检查此ArrayList
是否包含新号码。你可以用containsAll()
@DennisBjörk然后你可以尝试编辑你的问题 – Russiancold
什么是'numbersUsed'? –
你觉得'返回false;'在'else'中做什么?为什么不使用'contains',假设'numbersUsed'是一个'List'?你有没有考虑过使用'HashSet'? –
我不知道包含的方法,谢谢!但问题仍然存在。我将阅读HashSet! –