【问题标题】:Java Dice game won't work. need some advice [closed]Java Dice 游戏无法运行。需要一些建议[关闭]
【发布时间】:2013-06-14 11:59:16
【问题描述】:

我的代码有问题,这是一个简单的骰子游戏:

import java.util.Random;
class Zaruri {
    public static void main(String args[]) {
        Random roll = new Random();
        int[] zar = new int[2];

            for (int i = 0; i < 1; i++)  {
                for(int k = 0; k < 2; k++){
                zar[i] = (int) (roll* 6) + 1;
            }
            if (zar[0] == zar[1]) {
                System.out.println("Your numbers are : " + zar[0] + " and " + zar[1]  + "\nYou won! \nYEEEY!!");

            } else {
                System.out.println("Your numbers are : " + zar[0] + " and " + zar[1]  + "\nYou lost, better luck next time!");
            }
            }
    }
}

我不知道如何让它工作,首先它不会打印出第二个骰子(它总是 0),如果我放了更多然后 1 卷和 (roll.nextDouble * 6) + 1;它会起作用,但我不想超过 1 卷。 你能帮助我吗 ?我做错了什么??

【问题讨论】:

    标签: java random


    【解决方案1】:

    您不需要 2 个 for 循环。只需 1 个循环即可。移除外部 i 循环,让 k 循环生成随机 int。

    for (int k = 0; k < 2; k++) {
        zar[k] = roll.nextInt(6) + 1; // k loop populates your array.
    }
    if (zar[0] == zar[1]) {
        System.out.println("Your numbers are : " + zar[0] + " and "
                + zar[1] + "\nYou won! \nYEEEY!!");
    
    } else {
        System.out.println("Your numbers are : " + zar[0] + " and "
                + zar[1] + "\nYou lost, better luck next time!");
    }
    

    【讨论】:

    • 谢谢你,伙计!:) 它奏效了,我现在明白了。再次感谢@R.J
    【解决方案2】:

    有很多问题,我会一一解决

        for (int i = 0; i < 1; i++)  {
            for(int k = 0; k < 2; k++){
                zar[i] = (int) (roll* 6) + 1;
            }
            <snip rest of loop>
    

    带有k in的循环什么都不做,只是重复zar[i] = (int) (roll* 6) + 1;行几次,它什么也不做,这个循环应该被删除


            for (int i = 0; i < 1; i++)  {
                for(int k = 0; k < 2; k++){
                    zar[i] = (int) (roll* 6) + 1;
                }
                if (zar[0] == zar[1]) {
                    System.out.println("Your numbers are : " + zar[0] + " and " + zar[1]  + "\nYou won! \nYEEEY!!");
    
                } else {
                    System.out.println("Your numbers are : " + zar[0] + " and " + zar[1]  + "\nYou lost, better luck next time!");
                }
            }
    

    打印语句在for循环中,所以每次循环都会打印出来,第一次循环只设置第一个骰子,第二次只设置前两个,依此类推。


    zar[i] = (int) (roll* 6) + 1;
    

    roll是random类,不是数字而是生成随机数,应该是

    zar[i] = (int) (roll.nextDouble()* 6) + 1;
    

    或者更明智(因为无论如何你都想要一个 int

    zar[i] = roll.nextInt()+ 1;
    


    for (int i = 0; i < 1; i++)
    

    从 i=0 到 i

    【讨论】:

      【解决方案3】:

      尝试使用 Math.random() 而不是 Random()

      【讨论】:

        【解决方案4】:

        我不明白为什么你有两个循环,尤其是一个以k 作为索引的循环。您没有在任何地方使用k。试试这个:

         for (int i = 0; i < 2; i++)  {
             zar[i] = roll.nextInt(6) + 1;
         }
        

        【讨论】:

          【解决方案5】:

          试试这个:

          int Low = 10;
          int High = 100;
          int R = r.nextInt(High-Low) + Low;
          

          来源:How can I generate random number in specific range in Android?

          Java Generate Random Number Between Two Given Values

          【讨论】:

            【解决方案6】:

            删除带有i 的第一个循环,只保留k 循环。 然后它在逻辑上将无法正常工作并始终打印0,因为您不会生成随机数。 您必须执行zar[i]=roll.nextInt(6)+1;,因为范围是 0(包括)和 6(不包括)。从逻辑上讲,无论结果如何,您都必须加 1 才能获得 1-6 的范围。

            【讨论】:

              猜你喜欢
              • 2014-05-21
              • 1970-01-01
              • 2021-04-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-11-27
              相关资源
              最近更新 更多