0

我正在尝试创建一种方法,用户可以预测模拟抛硬币是正面还是反面。我无法将随机数分配给 1 或 2(对于尾部的头部)。我相信我的尝试(下面的代码)给了我 0、1 和 2。

public static void coinToss(String call){
        //setting up random
        Random random = new Random();

        //set user guess to numeric value
        int guessNo=0;


        if (call.equalsIgnoreCase("heads")){
            guessNo=1;
        }else if (call.equalsIgnoreCase("tails")){
            guessNo=2;
        }else System.out.println("Invalid. Enter either heads or tails");

        //setting result for coin toss 
        **int result = random.nextInt(2);**
        System.out.println("Trace: numberic result is:" + result);

        //if...else statement to print results of coin toss
        if (result==1){
            System.out.println("Result: heads");
        }else if (result==2){
            System.out.println("Result: Tails");
        }else System.out.println("Invalid result");

        if (guessNo==result){
            System.out.println("Guess Correct");
        }else System.out.println("Guess incorrect");

    }//method end

我是一个相对的java新手(显然!)所以非常感谢您的帮助!

4

3 回答 3

2

建议将一个添加到 nextInt(2) 结果的答案是正确的,但可能不是正确的长期策略。在许多方面,Java 更喜欢数字序列尽可能从 0 开始。例如,数组索引值从 0 到 length-1。

最好将头/尾的内部编码更改为使用 [0,1] 而不是 [1,2],并直接使用 nextInt 结果。

于 2013-11-10T20:17:15.080 回答
1

int result = (random.nextInt(2))+1;是你可能想尝试的。

于 2013-11-10T20:10:53.840 回答
1

如文档所述,Random::nextInt提供介于 0(包括)和指定上限(不包括)之间的随机数。因此,您必须首先从该范围中获取一个随机数[0,2>,然后将其加 1。

于 2013-11-10T20:11:33.750 回答