我的代码有问题,这是一个简单的骰子游戏:
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卷。 你能帮助我吗 ?我做错了什么?
答案 0 :(得分:4)
您不需要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!");
}
答案 1 :(得分: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!");
}
}
print语句在for循环中,因此每次循环打印出来,第一次循环只会设置第一个die,第二次只有前两个等等。
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从未被设置,因为它只经过一次循环
答案 2 :(得分:0)
尝试使用Math.random()而不是Random()
答案 3 :(得分:0)
我不明白为什么你有两个循环,特别是那个以k
作为索引的循环。你没有在任何地方使用k
。试试这个:
for (int i = 0; i < 2; i++) {
zar[i] = roll.nextInt(6) + 1;
}
答案 4 :(得分:0)
试试这个:
int Low = 10;
int High = 100;
int R = r.nextInt(High-Low) + Low;
消息来源:How can I generate random number in specific range in Android?
答案 5 :(得分:0)
使用i
删除第一个循环,只允许k
循环。
然后它将无法在逻辑上工作并始终打印0
,因为您不生成随机数。
您必须执行zar[i]=roll.nextInt(6)+1;
,因为范围是0(包括)和6(不包括)。从逻辑上讲,你必须添加1以获得1-6范围的结果。