c****u 发帖数: 152 | 1 为什么我输入骰子数 “1”, 摇出来的总是零,然后就死机了。牛人们帮我看看吧。
多谢了!
import acm.util.*;
import acm.program.*;
public class MyDice extends ConsoleProgram {
private static final int NUM_SIDES = 6;
public void run (){
int numDice = readInt("Number of dices: ");
int maxRoll = numDice * NUM_SIDES;
int numRolls = 0;
while (true) {
int roll = rollDice (numDice);
numRolls++;
if (roll == maxRoll) break;
println ("Rolled = " + roll);
} print ("Rolled " + maxRoll +"after "+ numRolls + " roles.");
}
private int rollDice(int numDice) {
int total = 0;
for (int i=1; i < numDice; i++) {
total = total + rgen.nextInt (1, NUM_SIDES);
}
return total;
}
/* Private instance variables */
private RandomGenerator rgen = RandomGenerator.getInstance();
} |
b*******s 发帖数: 5216 | 2 1) for(int i = 1; i <= ...)
2) if(roll >= ...)
【在 c****u 的大作中提到】 : 为什么我输入骰子数 “1”, 摇出来的总是零,然后就死机了。牛人们帮我看看吧。 : 多谢了! : import acm.util.*; : import acm.program.*; : public class MyDice extends ConsoleProgram { : : private static final int NUM_SIDES = 6; : public void run (){ : int numDice = readInt("Number of dices: "); : int maxRoll = numDice * NUM_SIDES;
|
c****u 发帖数: 152 | 3 不好意思,水平太差,我真的是怎么样都看不出我的程序哪里不对,也没看懂你的意思
//blush
【在 b*******s 的大作中提到】 : 1) for(int i = 1; i <= ...) : 2) if(roll >= ...)
|
b*******s 发帖数: 5216 | 4 一个是你那个循环初始为1,退出条件是小于1,所以压根没做就退出了
这是为什么你设掷一次总是初始结果0的原因
另一个是你的退出死循环的条件是等于某个值,万一大于你就彻底死循环了
【在 c****u 的大作中提到】 : 不好意思,水平太差,我真的是怎么样都看不出我的程序哪里不对,也没看懂你的意思 : //blush
|
c****u 发帖数: 152 | |