gpt4 book ai didi

java - 为什么这个算法只给出 2 的值?另外,我得到空指针异常

转载 作者:行者123 更新时间:2023-11-29 07:29:43 25 4
gpt4 key购买 nike

我正在尝试制作一个 Blackjack 游戏,并且我正在尝试编写一种随机确定牌面的方法。我的方法是:

  public String determineFace(){
String f = null;

if ( (int) Math.random() * 12 == 0){
f = "2";
}
if ( (int) Math.random() * 12 == 1){
f = "3";
}
if ( (int) Math.random() * 12 == 2){
f = "4";
}
if ( (int) Math.random() * 12 == 3){
f = "5";
}
if ( (int) Math.random() * 12 == 4){
f = "6";
}
if ( (int) Math.random() * 12 == 5){
f = "7";
}
if ( (int) Math.random() * 12 == 6){
f = "8";
}
if ( (int) Math.random() * 12 == 7){
f = "9";
}
if ( (int) Math.random() * 12 == 8){
f = "10";
}
if ((int) Math.random() * 12 == 9){
f = "J";
}
if ((int) Math.random() * 12 == 10){
f = "Q";
}
if ((int) Math.random() * 12 == 11){
f = "K";
}
if ((int) Math.random() * 12 == 12){
f = "A";
}
return f;
}

但是当我实例化一张卡片时,我只得到值“2”。我的 Suit 方法工作正常;这是;

  public static Suit determineSuit(){
if ( (int) (Math.random() * 3) == 0){
return Suit.CLUBS;
}
else if ((int) (Math.random() * 3) == 1){
return Suit.DIAMONDS;
}
else if ((int)(Math.random() * 3) == 2){
return Suit.HEARTS;
}
else{
return Suit.SPADES;
}
}

如何让我的 determineFace() 方法正常工作?

此外,当我为测试用例实例化卡片时,构造函数和实例变量为:

  private CardValue value;
private Suit suit;

public Card(){
this.value = new CardValue(determineFace());
this.suit = determineSuit();

}

我有时会遇到 NullPointerExceptions。

最佳答案

(int) Math.random() 

这总是生成 0 你应该生成 0<=x<13试试这个吧

(int)(Math.random()*13)

请注意第二个括号中的额外括号。

关于java - 为什么这个算法只给出 2 的值?另外,我得到空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44599776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com