首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用随机数的Java对策

使用随机数的Java对策
EN

Stack Overflow用户
提问于 2017-01-02 07:16:45
回答 4查看 1.3K关注 0票数 1

我有一个java程序,在这个程序中,计算机将决定哪个玩家首先从数组中删除随机数。当播放机移除该数字时,数组将减少。所有这些都将使用随机的方式完成。但是当我运行我的代码时,这并不是我所期望的那样。我能知道哪里出了问题吗?

这是我的密码:

全班

代码语言:javascript
复制
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;
    }
}

代码语言:javascript
复制
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,你输了。

我能知道哪里出了问题吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-02 07:37:41

您的错误只是将播放器和计算机randPrandNum的随机数生成器放在运行游戏的for循环之前,所以随机数的选择只执行一次。

您的代码应该是:

代码语言:javascript
复制
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 ");
        }
    }

}
票数 1
EN

Stack Overflow用户

发布于 2017-01-02 07:23:01

首先,您选择的是the.player.outside the.loop,所以所选的任何内容都会运行所有回合

票数 0
EN

Stack Overflow用户

发布于 2017-01-02 07:25:55

您需要移动这两行代码:

代码语言:javascript
复制
randP = minP + (int)(Math.random()*(maxP));
randNum = minN + (int)(Math.random()*(maxN));

for循环的开头。这将确保在每次迭代时,您可以选择一个新的播放器和一个新的数组位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41422749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档