gpt4 book ai didi

java - 使用 RandomGenerator 抛硬币

转载 作者:行者123 更新时间:2023-12-02 08:13:38 26 4
gpt4 key购买 nike

我正在尝试编写一个模拟掷硬币的程序。第一次硬币正面朝上时,我希望程序退出。 while 循环中的第一个语句翻转硬币一次。然后我有一个 if 语句,表示如果我刚刚翻转的硬币是正面,则退出程序。但我的程序没有按照我想要的方式运行。有时

我的问题是我在 while 循环中每 1 个周期翻转硬币一次还是两次?硬币是否在 while 循环中翻转一次,然后在 if 条件中翻转第二次?我已经测试过它,但它每次都会给我不同的结果和不同的错误,我不明白为什么。

if 条件对于我在程序中尝试执行的操作正确吗?

import acm.program.*;
import acm.util.*;

public class CoinToss extends ConsoleProgram{
public void run(){


while (true){
println(flipCoin());
if (flipCoin() == "heads"){
break;
}
}
}

public String flipCoin(){
String flip = rgen.nextBoolean() ? "heads" : "tails";
return flip;
}


public RandomGenerator rgen = RandomGenerator.getInstance();
}

最佳答案

每次调用 flipCoin() 时,该方法都会运行,因此它会在 println(flipCoin()); 行运行一次,在 if ( FlipCoin() == “正面”)。两次调用的结果可能不一样,你应该存储结果然后使用结果,所以:

    while (true){
String result=flipCoin();
System.out.println(result);
if (result.equals("heads")){
break;
}
}

还要注意,对字符串使用 == (在大多数情况下)总是给出 false;这是因为 == 询问它们是否实际上是同一个对象,而不是询问它们的内容是否相等(两张纸上都可以写有“hi”,但它们不是同一张纸)。 .equals 比较两个字符串的内容(即,如果它们说的是相同的单词)。

我的修改尽可能接近您的代码,但您可能需要考虑以下可能的改进:

  • break; 可以有合法的用法,但通常是不必要的,您可以通过以下方式避免它:

    String result=flipCoin();
    while (result.equals("heads")==false){
    System.out.println(result);
    result=flipCoin();

    }
  • 使用字符串作为标识符再次占有一席之地,但考虑到您可以使用的所有不同的大写形式(heads、Heads、HEADS),枚举可能是更好的选择。

关于java - 使用 RandomGenerator 抛硬币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17189842/

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