2012-10-02 105 views
1

我不得不为这个类项目编写这个。编译时我没有遇到任何错误,但是当我尝试执行它时,程序不会运行。我的Java代码不能运行,为什么? (只有几行)

我们必须编写一个程序myRandomWalkers.java,它带有两个命令行参数N和T.在每个T独立实验中,模拟N步的随机游走并计算平方距离。输出均方距离(T平方距离的平均值)。

我写了下面的:提前

public class myRandomWalkers { 

    public static void main(String[] args) { 

     int n= Integer.parseInt(args[0]); 
     int t= Integer.parseInt(args[1]); 
     int x= 0; // starting x position 
     int y= 0; // starting y position 
     int sum = 0; // for calculating mean square distance 
     double r; 

     int count = 0; 
     while (count <= t) 
     { 
      for (int i=0; i<n; i++) { 

       r= Math.random(); 
       if (r<=0.25) x++; 
       else if(r<=0.50) x--; 
       else if(r<=0.75) y++; 
       else if(r<=1.0) y--;   

       int z = ((x*x) + (y*y)); 
       sum +=z; 
      } 
     } 

     int average = (sum/t); 
     System.out.println ("mean squared distance = " + average); 
    }   
} 

谢谢!

+6

http://codereview.stackexchange.com是最合适的地方。 – Vikdor

+3

@Vikdor在这种情况下有一个错误(程序不会终止),所以我想它也可以被问到...虽然可以说这个问题太过本地化了...... – assylias

+2

我投票关闭基于标题,但它不是一个真正的代码审查问题。它更多的是寻找错误或问题,因此更适合SO。 (我更新了OP的标题,以更好地反映这个国际海事组织。) –

回答

9

输出将取决于您传递给程序的参数。但是:

如果 count > t while循环将不被执行
  • 如果count <= t while循环将永远不会结束,因为你不增量次数 - 你可能需要在你的while循环添加count++;地方。
+0

我在for循环结束后添加了count ++,但仍然在while循环中,仍然存在相同的问题:/ – Ryan

+0

@Ryan不知道您使用了什么输入,很难重现您看到的内容,因此很难进一步帮助您。 – assylias

+0

@Ryan例如,对于n = 5和t = 1,在for循环后面加上'count ++'后,我得到以下输出:“均方根距离= 25” – assylias

0

正如assylias所说,你的while循环的退出条件永远不会达到,因为count永远不会改变。

但是我也会评论一下这样一个事实,即您使用了两个不同的循环,两者的情况非常相似。有人会说,你在这里使用哪种类型的循环是个人喜好,但使用2种不同的风格是没有意义的。我倾向于使用这样一个原则,即如果我知道有多少次迭代,那么将使用for循环(因此使用计数器的任何事物都有资格)

其他考虑因素(用于额外信用)可能是看看你的parseInt调用,我相信负数会很好,但你的计算不会考虑它们。并且非数字可以很容易地传递到命令行,那么你的程序会做什么?你更喜欢做什么?

相关问题