蓝色 J 显示它是 运行,但不会打开结果 window

Blue J shows it is running, but will not open result window

我一直在 运行 编写一个程序来模拟通过 7 步桥所需的步数。生成一个随机数以确定此人是向前还是向后迈出一步。本次模拟运行1000次。在此之后打印出通过的平均步数,以及它所花费的最大步数。

这样,又是运行1000次。它编译得很好。我的问题是,当我转到 运行 时,(在 BlueJ 上)栏显示它是 运行ning 但输出 window 没有出现。怎么了? (很可能是我没有注意到的非常明显的事情。)

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) 只能 return 0,所以 ans 将是 0。你没有警卫来确保 s 不会变成负数,所以它会 -并且它仍然小于 7,这意味着 while 循环(条件 s < 7)会持续 long 时间(具体来说,直到 s 返回到再次为正数)。