1

このプログラムの目的は、"K6V3 20.2 17.4" などの引数を実行し、Weather クラスを使用して、最後の 2 つの数値引数に基づいて風冷を計算し、最初の引数をエリアの省略名として使用することです。「K6V3 20.2 17.4 KCHO 40.0 10.0」のように、プログラムに 3 の倍数の引数が与えられたときに問題が発生しました。3 番目の引数の後にループを再開する方法がわかりません。私のプログラムは最初の 3 つの引数を取り、正しい情報を表示しますが、2 番目の 3 つの引数についてはその情報を繰り返すだけです。これまでの私のコードは、HELP!?!?! です。

public class ChillMapper {
    public static void main(String args[]) {
        double ICAO;
        double t;
        double v;
        double windChill;

        for (int i = 0; i < args.length / 3; i++) {
            if (args.length % 3 == 0) {
                ICAO = Text.toDouble(args[0]);
                t = Text.toDouble(args[1]);
                v = Text.toDouble(args[2]);
                windChill = Weather.windChillNA(t, v);
                Map.setTemperature(args[i], windChill);
            }
        }
    }
}
4

2 に答える 2

3

このようにループを作成する方がおそらく簡単です。

for (int i = 0; i < args.length; i+=3)
{
    ICAO = Text.toDouble(args[i+0]);
    t = Text.toDouble(args[i+1]);
    v = Text.toDouble(args[i+2]);
    windChill = Weather.windChillNA(t,v);
    Map.setTemperature(ICAO,windChill);
}

毎回チェックする代わりにi%3==0、3ステップずつジャンプします(引数の長さ自体が3の倍数であることをチェックする方がよいでしょう。これは、演習として残しておきます)。次に、それぞれインデックスi、i + 1、i+2で引数を取ります。

于 2013-02-28T00:19:34.963 に答える
0

配列インデックスがハードコーディングされています。代わりに変数 'i' を使用します。

public class ChillMapper
{
public static void main(String args[])
{
    double ICAO;
    double t;
    double v;
    double windChill;

   int i = 0;
   if (args.length % 3 == 0)
   {
      while (i < args.length)
      {
         ICAO = Text.toDouble(args[i]);
         t = Text.toDouble(args[++i]);
         v = Text.toDouble(args[++i]);
         windChill = Weather.windChillNA(t,v);
         Map.setTemperature(args[i],windChill);
     }
   }
 }
} 
于 2013-02-28T00:23:44.707 に答える