蓝色的J显示它正在运行,但不会打开结果窗口
问题描述:
我一直在运行一个程序,它模拟了通过一个7步桥接所需的步骤数。生成一个随机数来确定该人是向前还是向后。这个模拟运行1000次。在此之后,打印出的平均打印步数以及打印的最大步数。蓝色的J显示它正在运行,但不会打开结果窗口
这反过来运行1000次。它编译好。我的问题是,当我去运行它时,(在BlueJ上)条显示它正在运行,但输出窗口未能出现。发生什么事? (最有可能是愚蠢的,我不知道的东西。)
import java.util.Random;
public class Prog214a
{
public static void main (String[] args)
{
Random rn = new Random();
for (int m = 1; m <= 20; m++)
{
int max = 0;
for (int c = 1; c <= 1000; c++)
{
int s = 0;
int sn = 0;
int sum = 0;
while (s < 7)
{
int ans = rn.nextInt(1) + 0;
if (ans == 1) {
s = s + 1
}
else {
s = s - 1;
}
sn++;
}
sum = sum + sn;
if (sn > max) {
max = sn;
}
if (c == 1000) {
double avg = sum/c;
System.out.print(avg);
System.out.print(" " + max);
}
}
}
}
}
答
至少有一个问题。在这里:
int ans = rn.nextInt(1) + 0;
if (ans == 1){
s = s + 1;
}
else {
s = s -1;
}
rn.nextInt(1)
只能返回0,所以ans
将是0。你有没有警卫,确保s
不变成负,所以它 - 它仍然低于7,这意味着while循环(条件为s < 7
)继续执行长时间时间(具体而言,直到s
再次回到正数)。
请正确地缩进/格式化您的代码。在BlueJ中,您可以按ctrl + shift + I自动执行此操作。 – davmac
's = s + 1' - 您在此陈述后错过了分号。你确定这段代码编译正确吗? –
@Flightless_bird,使用和IDE很棒,你还应该学习使用IDE进行调试。 – Acewin