0

我应该在 N 步后添加步行者位置的距离。我运行了 while T 次,需要在 T 跟踪之后添加所有 N 个步骤,然后除以试验量以获得平均值。到目前为止,这是我的代码。我尝试做一个不同的整数,比如距离/T,但它说没有找到距离。那是因为它是在while循环中定义的。我正在使用处理。

import javax.swing.JOptionPane;
String input=JOptionPane.showInputDialog("Steps");
int x=Integer.parseInt(input);
if (x<0)
{
    System.out.println("Error. Invalid Entry.");
}
int T=1;
int N=0;
while (T<10)
{
    while (N<x)
    {
        int stepsX=Math.round(random(1,10));
        int stepsY=Math.round(random(1,10));
        System.out.println(stepsX+","+stepsY);
        N=N+1;
        if (N==x)
        {
            int distance=(stepsX*stepsX)+(stepsY*stepsY);
            System.out.println(distance);
        }
    }
    T=T+1;
    N=0;
}
System.out.println("mean sq. dist = ");
4

2 回答 2

1

我假设这是因为您没有跟踪总距离。此外,您的distanceint 变量仅存在于范围内:

        if (N==x)
        {
            int distance=(stepsX*stepsX)+(stepsY*stepsY);
            System.out.println(distance);
        }

在此处阅读有关范围 的更多信息:do-while 循环的范围?

有点不清楚你需要什么,但我做了一些我认为会有所帮助的更改:

import javax.swing.JOptionPane;
String input=JOptionPane.showInputDialog("Steps");
int x=Integer.parseInt(input);
if (x<0)
{
    System.out.println("Error. Invalid Entry.");
}
int T=1;
int N=0;
double totalDistance = 0.0;//keep track over over distance;
while (T<10)
{
    while (N<x)
    {
        int stepsX=Math.round(random(1,10));
        int stepsY=Math.round(random(1,10));
        System.out.println(stepsX+","+stepsY);
        N=N+1;
        if (N==x)
        {
            int distance=(stepsX*stepsX)+(stepsY*stepsY);
            totalDistance = totalDistance + distance;
            System.out.println("current distance:  " + distance);
            System.out.println("current total distance:  " + totalDistance);
        }
    }
    T=T+1;
    N=0;
}
//calculate whatever you need using totalDistance
System.out.println("mean sq. dist = " + (totalDistance/T) );
于 2013-09-11T19:35:31.253 回答
0

这将是我的答案,您似乎失去了所有步骤,除了 while 循环中的最后一个步骤。

import javax.swing.JOptionPane;
String input=JOptionPane.showInputDialog("Steps");
int x=Integer.parseInt(input);
if (x<0)
{
    System.out.println("Error. Invalid Entry.");
}
int T=1;
int N=0;
int stepsX = 0;
int stepsY = 0;
while (T<10)
{
    while (N<x)
    {
        stepsX += Math.round(random(1,10));
        stepsY += Math.round(random(1,10));
        System.out.println(stepsX+","+stepsY);
        N=N+1;
        if (N==x)
        {
            int distance=(stepsX*stepsX)+(stepsY*stepsY);
            System.out.println(distance);
        }
    }
    T=T+1;
    N=0;
}
double distance = Math.sqrt(Math.pow(stepsX, 2) + Math.pow(stepsY, 2));
System.out.println("mean sq. dist = "+distance);

但是,如果它不是改写你的问题,请。

于 2013-09-11T19:29:43.753 回答