我的代码只产生两个随机数,而不是我需要的五个播放器和计算机。有人能看到问题吗?
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;
}