1

私はこれをクラスプロジェクトのために書かなければなりませんでした。コンパイル時にエラーは発生しませんが、実行しようとするとプログラムが実行されません。

2つのコマンドライン引数NとTを受け取るプログラムmyRandomWalkers.javaを作成する必要があります。T個の独立した実験のそれぞれで、Nステップのランダムウォークをシミュレートし、距離の2乗を計算します。平均二乗距離(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);
    }        
}

前もって感謝します!

4

2 に答える 2

9

出力は、プログラムに渡す引数によって異なります。でも:

  • count > twhileループが実行されない場合
  • count <= tcountをインクリメントしないためにwhileループが終了しない場合は、おそらくwhileループのどこかに追加する必要がありますcount++;
于 2012-10-02T17:33:13.683 に答える
0

assylias が言ったように、 while ループの終了条件は変更されないため、到達することはありcountません。

ただし、両方の状況がかなり似ている2つの異なるループを使用したという事実についてもコメントします。ここで使用するループのタイプは個人的な好みであると主張する人もいますが、2 つの異なるスタイルを使用することは意味がありません。私は、反復回数がわかっている場合は for ループを使用するという原則を使用する傾向があります (したがって、カウンターを使用しているものはすべて適格になります)。

他の考慮事項(追加のクレジット用)は、parseInt 呼び出しを確認することです。負の数は問題なく通過すると思いますが、計算ではそれらを考慮しません。また、非数値もコマンドラインに簡単に渡すことができます。その場合、プログラムはどうしますか? あなたはそれが何をしたいと思いますか?

于 2012-10-02T17:47:13.157 に答える