我有一个java程序,在这个程序中,计算机将决定哪个玩家首先从数组中删除随机数。当播放机移除该数字时,数组将减少。所有这些都将使用随机的方式完成。但是当我运行我的代码时,这并不是我所期望的那样。我能知道哪里出了问题吗?
这是我的密码:
全班
public class StickBag {
private int numOfSticks;
public StickBag(int numOfSticks)
{
this.numOfSticks = numOfSticks;
}
public int getNumOfSticks() {
return numOfSticks;
}
public void setNumOfSticks(int numOfSticks) {
this.numOfSticks = numOfSticks;
}
public int remove(int n)
{
numOfSticks = numOfSticks - n;
return numOfSticks;
}
}主
public class StickGameApp {
public static void main(String[] args) {
StickBag s1 = new StickBag(25);
System.out.println("Welcome to the game of sticks!");
System.out.println("There are initially " + s1.getNumOfSticks() + " sticks on the board.");
int minP = 1;
int maxP = 2;
int randP;
int minN = 1;
int maxN = 10;
int randNum;
randP = minP + (int)(Math.random()*(maxP));
randNum = minN + (int)(Math.random()*(maxN));
for (int i=0; i<10; i++)
{
if(s1.getNumOfSticks() > randNum)
{
System.out.println("Computer player " + randP + " choose " + randNum + " sticks ");
s1.remove(randNum);
}
else
{
System.out.println("Computer player " + randP + " wants to choose " + randNum + " sticks but is unable to.");
System.out.println("Computer player " + randP + " loses ");
}
}
}
}当我运行代码时,它显示如下:
欢迎来到棍棒游戏!
最初板上有25根棍子。
电脑播放器2选择6支
电脑播放器2选择6支
电脑播放器2选择6支
电脑播放器2选择6支
电脑播放器2想选择6支,但无法选择。电脑播放器2输
电脑播放器2想选择6支,但无法选择。电脑播放器2输
电脑播放器2想选择6支,但无法选择。电脑播放器2输
电脑播放器2想选择6支,但无法选择。电脑播放器2输
电脑播放器2想选择6支,但无法选择。电脑播放器2输
电脑播放器2想选择6支,但无法选择。电脑播放器2输
但我想让它像这样展示:
欢迎来到棍棒游戏!
最初板上有25根棍子。
电脑播放器1选择5支。
电脑播放器2选择7支。
电脑播放器1选择7支。
电脑播放器2想选择7支,但无法选择。
电脑播放器2,你输了。
我能知道哪里出了问题吗?
发布于 2017-01-02 07:37:41
您的错误只是将播放器和计算机randP和randNum的随机数生成器放在运行游戏的for循环之前,所以随机数的选择只执行一次。
您的代码应该是:
for (int i=0; i<10; i++)
{
randP = minP + (int)(Math.random()*(maxP));
randNum = minN + (int)(Math.random()*(maxN));
if(s1.getNumOfSticks() > randNum)
{
System.out.println("Computer player " + randP + " choose " + randNum + " sticks ");
s1.remove(randNum);
}
else
{
System.out.println("Computer player " + randP + " wants to choose " + randNum + " sticks but is unable to.");
System.out.println("Computer player " + randP + " loses ");
}
}
}发布于 2017-01-02 07:23:01
首先,您选择的是the.player.outside the.loop,所以所选的任何内容都会运行所有回合
发布于 2017-01-02 07:25:55
您需要移动这两行代码:
randP = minP + (int)(Math.random()*(maxP));
randNum = minN + (int)(Math.random()*(maxN));在for循环的开头。这将确保在每次迭代时,您可以选择一个新的播放器和一个新的数组位置。
https://stackoverflow.com/questions/41422749
复制相似问题