-1

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

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 卷。你能帮助我吗 ?我究竟做错了什么??

4

6 回答 6

5

你不需要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!");
}
于 2013-06-18T10:08:44.927 回答
1

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

    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 属于随机类,它不是数字而是生成随机数,这应该是

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

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

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


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

从 i=0 到 i<1 的数字只是一个数字,0,骰子 1 永远不会设置,因为它只经过循环一次

于 2013-06-18T10:20:16.660 回答
0

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

 for (int i = 0; i < 2; i++)  {
     zar[i] = roll.nextInt(6) + 1;
 }
于 2013-06-18T10:07:51.420 回答
0

试试这个:

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

消息来源:如何在 Android 中生成特定范围内的随机数?

Java 在两个给定值之间生成随机数

于 2013-06-18T10:08:00.827 回答
0

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

于 2013-06-18T10:07:00.570 回答
0

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

于 2013-06-18T10:13:36.570 回答