需要帮助为计算机和玩家打印五个随机数(如掷骰子).我需要使用代码中看到的(randomeValue= )语句



我的代码只产生两个随机数,而不是我需要的五个播放器和计算机。有人能看到问题吗?

import java.util.Random;
public class Die{
      private static int HIGHEST_DIE_VALUE=6;
      private static int LOWEST_DIE_VALUE=1;
      private int randomValue;
    public Die(){
                randomValue = ((int)(Math.random() * 100) % HIGHEST_DIE_VALUE + LOWEST_DIE_VALUE);
        }
    private void generateRandom(){
              randomValue = ((int)(Math.random() * 100) % HIGHEST_DIE_VALUE + LOWEST_DIE_VALUE);
    }
    public int getValue(){
        return randomValue;
      }
}
public class FiveDice {
    public static void main(String[] args){
            Die computer = new Die();
            Die player = new Die();
                System.out.println("Computer five random die values:");
                System.out.println("tDie 1 rolled a " + computer.getValue() + " value");
                System.out.println("tDie 2 rolled a " + computer.getValue() + " value");
                System.out.println("tDie 3 rolled a " + computer.getValue() + " value");
                System.out.println("tDie 4 rolled a " + computer.getValue() + " value");
                System.out.println("tDie 5 rolled a " + computer.getValue() + " value");
                System.out.println("nPlayer five random die values");
                System.out.println("ttDie 1 rolled a " + player.getValue() + " value");
                System.out.println("ttDie 2 rolled a " + player.getValue() + " value");
                System.out.println("ttDie 3 rolled a " + player.getValue() + " value");
                System.out.println("ttDie 4 rolled a " + player.getValue() + " value");
                System.out.println("ttDie 5 rolled a " + player.getValue() + " value");   

        }
}

这是输出的内容:

计算机五个随机骰子值:
骰子 1 滚动了 5 值
骰子 2 滚动了 5 值
骰子 3 滚动了 5 值
骰子 4 滚动了 5 值
骰子 5 滚动了 5 值

玩家五个随机骰子值
骰子 1 滚动了 4 值
骰子 2 滚动了 4 值
骰子 3 滚动了 4 值
骰子 4 滚动了 4 值
骰子 5 滚动了 4 值

我需要每个玩家的每个骰子都是随机数。有什么帮助吗?

原因是,您只在构造函数中生成值并每次返回相同的值,例如:

public Die(){
    randomValue = ((int)(Math.random() * 100) % HIGHEST_DIE_VALUE + LOWEST_DIE_VALUE);
}
public int getValue(){
    return randomValue;
}

在这里,randomValue只初始化一次(在构造函数中(,因此,每当调用该方法时getValue都会返回相同的值。

如果每次都想要不同的值,则可以直接调用generateRandom方法并将其更改为返回int。实际上,没有必要将randomValue作为实例变量,因为不需要保留值。您可以改为generateRandom静态并直接从外部调用它,例如:

public class Die{
    private static int HIGHEST_DIE_VALUE=6;
    private static int LOWEST_DIE_VALUE=1;
    public static int generateRandom(){
        return ((int)(Math.random() * 100) % HIGHEST_DIE_VALUE + LOWEST_DIE_VALUE);
    }
}

并在main方法中使用以下命令调用它: Die.generateRandom();

因为在创建 Die 类的对象时,由于 2 个构造函数调用,随机数被生成了 2 次。

一种可能性是,您可以在 computer.getValue() 方法中使用 generateRandom(( 方法每次都获取一个随机数。此外,在这种情况下,使用实例变量randomValue生成随机变量。

在这种情况下,请按如下所示修改代码:

private void generateRandom(){
              this.randomValue = ((int)(Math.random() * 100) % HIGHEST_DIE_VALUE + LOWEST_DIE_VALUE);
    }
public int getValue(){
        generateRandom();  // add this call to method generateRandom();
        return this.randomValue;
      }

最新更新