0

Java の初心者で、基本的に昨日から始めました。

さて、これが問題です。

私は「アベレージャ」を作成しようとしています。それを呼びたい場合は、ランダムな量の数値を受け入れます。プログラムで定義する必要はありません。任意でなければなりません。コンソールで動作させる必要があります。

しかし、 Console.ReadLine() や Scanner などは使用できません。コンソール自体からデータを入力する必要があります。したがって、呼び出すときは、コンソールに次のように入力します。

java AveragerConsole 1 4 82.4

これはプログラムを呼び出し、1、4、82.4 の 3 つの引数を与えます。

私が抱えている問題は、これを伝えることができないようです:

配列の次のフィールドが空の場合は、平均を計算します (コードの 14 行目を確認してください)。

私のコードは以下です:

public class AveragerConsole
{
   public static void main(String args[])
   {
    boolean stop = false;
    int n = 0;
    double x;
    double total = 0;
    while (stop == false)
    {
        if (args[n] == "")  //Line 14
        {
            double average = total / (n-1);
            System.out.println("Average is equal to: "+average);
            stop = true;
        }
        else
        {
            x = Double.parseDouble(args[n]);
            total = total + x;
            n = n + 1;
        }
    }
  }
}

次のエラーが表示されます。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
        at AveragerConsole.main(AveragerConsole.java:14)
4

3 に答える 3

1
for(String number : args) {
  // do something with one argument, your else branch mostly
}

また、 n は必要ありません。すでに引数の数があり、引数の長さです。これが最も簡単な方法です。

于 2013-09-25T11:44:26.210 に答える
1

3 つの入力を指定し、配列は 0 から計算を開始argsします。入力による配列は次のとおりです。

args[0] = 1
args[1] = 4
args[2] = 82.4

args[3] = // Index out of bound

より良い実装は次のようになります

double sum = 0.0;

// No fault tolerant checking implemented
for(String value: args)
   sum += Double.parseDouble(value);

double average = sum/args.length;
于 2013-09-25T11:41:50.873 に答える