我写了一个简单的Java程序来在控制台上显示20个骰子卷的结果.我得到的结果如下:
3
1
java.util.Random@62efae3b
1
5
4
1
java.util.Random@62efae3b
1
java.util.Random@62efae3b
java.util.Random@62efae3b
1
6
java.util.Random@62efae3b
1
java.util.Random@62efae3b
java.util.Random@62efae3b
1
2
3
3
Run Code Online (Sandbox Code Playgroud)
当我运行它几次时,"@"之后的字符串是不同的,但基本上是相同的格式.我做错了什么?
这是代码:
import java.util.Random;
public class QiProb3 {
public static void main(String[] args) {
Random diceNumber = new Random();
for (int count = 0; count <= 20; count++) {
if ((diceNumber.nextInt(6) + 1) == 1) {
System.out.println("1");
} else if ((diceNumber.nextInt(6) + 1) == 2) {
System.out.println("2");
} else if ((diceNumber.nextInt(6) + 1) == 3) {
System.out.println("3");
} else if ((diceNumber.nextInt(6) + 1) == 4) {
System.out.println("4");
} else if ((diceNumber.nextInt(6) + 1) == 5) {
System.out.println("5");
} else if ((diceNumber.nextInt(6) + 1) == 6) {
System.out.println("6");
} else {
System.out.println(diceNumber);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
else {
System.out.println(diceNumber);
}
Run Code Online (Sandbox Code Playgroud)
您正在diceNumber通过toString()在else子句中调用其默认函数来打印地址.
这就是你得到的原因java.util.Random@62efae3b
在更关键的问题是,为什么它得到了"其他"条款,我相信这不是你的意图.
注意:在问题中,每个if/else if子句中都会生成一个新数字,这就是代码实际到达最后一个else子句的原因.
你应该做的是:
for (int count = 0; count < 20; count++) {
int rollValue = diceNumber.nextInt(6) + 1;
if (rollValue == 1) {
System.out.println("1");
} else if (rollValue == 2) {
System.out.println("2");
} else if (rollValue == 3) {
System.out.println("3");
} else if (rollValue == 4) {
System.out.println("4");
} else if (rollValue == 5) {
System.out.println("5");
} else if (rollValue == 6) {
System.out.println("6");
} else {
// This else is now redundant
System.out.println(diceNumber);
}
}
Run Code Online (Sandbox Code Playgroud)
或者更简单的方法是:
// count < 20 instead of count <= 20
for (int count = 0; count < 20; count++) {
int rollValue = diceNumber.nextInt(6) + 1;
System.out.println(rollValue);
}
Run Code Online (Sandbox Code Playgroud)
感谢'Elliott Frisch'意识到循环执行了21次而不是20次.