Blue J显示它正在运行,但不会打开结果窗口

时间:2016-11-10 00:32:02

标签: java execution bluej

我一直在运行一个程序来模拟跨越7步桥所需的步骤数。生成随机数以确定该人是向前还是向后迈出一步。该模拟运行1000次。在此之后,打印出来的平均步数以及最大步数。

这反过来运行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);             
                }
            }   
        } 
    } 
}

1 个答案:

答案 0 :(得分:1)

至少有一个问题。这里:

                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)继续 long 时间(具体来说,直到s再次回到正数)。