我必须为一个课程项目写这个。编译时我没有遇到任何错误,但是当我尝试执行它时程序不会运行。
我们必须编写一个程序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);
}
}
提前致谢!
答案 0 :(得分:9)
输出取决于您传递给程序的参数。但是:
count > t
将不执行while循环count <= t
while循环永远不会因为你没有增加计数而结束 - 你可能需要在while循环中的某处添加count++;
。答案 1 :(得分:0)
正如assylias所说,永远不会达到你的while循环的退出条件,因为count
永远不会改变。
然而,我还评论了你使用了两个不同的循环这两个情况非常相似的事实。有人会说你在这里使用哪种类型的循环是个人偏好,但使用2种不同的风格是没有意义的。我倾向于使用这样的原则:如果我知道将有多少次迭代,那么使用for循环(所以任何使用计数器的东西都有资格)
其他考虑因素(额外学分)可能是看看你的parseInt电话,我相信负数会很好,但你的计算不会考虑它们。而且非数字也很容易传入命令行,那么你的程序会做什么呢?你更喜欢它做什么?