2017-11-24 12 views
0

コマンドラインで5つ以上の変数を入力していて、その中から配列を作成しています。私はこれらの値を追加していますが、なぜ動作しないのか分かりません。Java:コマンドライン入力の合計が配列の長さを返す*回答

私のコードは次のとおりです。

public static void main(String args[]) { 
    int t = args.length; 
    int[] u; 
    u = new int[t]; 
    int v = 0; 
    for (int i=0; i<t; i++) { 
     u[i]= Integer.parseInt(args[i]); 
     for (int j=0; j<t; j++) { 
      v = v + u[i]; 
      System.out.println(v); 
     } 
    } 
} 

しかしI入力5つのものならば、これは私が間違っていると、任意の助けをいただければ幸いどこか分からない25.

を出力します。

注:私の仕事では、ライブラリ機能を使用する必要はありません。

+3

がループのためにあなたの内側を取り除く(ただしループ内でコードを維持)、あなただけでは問題 – musefan

+0

を解決する必要があります一つのループを、必要としますあなたのコード、内側のループは、外側のループと同じ数の繰り返しを行います。あなたのケースでは、5回は内側のループに5回追加され、外側のループの繰り返しはそれぞれ5回繰り返されます。それ5 * 5 = 25 – AguThadeus

答えて

0

1)ループ内に別のforループがあり、問題の原因となっています。

2)変数の名前付けに注意してください - >目的を明示/説明する変数名を使用してください。変数名tはあまり説明的ではありません。

3)また、余分な変数/配列を作成する必要はありません。入力をループして合計に加算するだけです。

public static void main(String args[]) { 
    int sum = 0; 
    for (int i=0; i<args.length; i++) { 
    sum += Integer.parseInt(args[i]); 
    } 
    System.out.println(sum); 
} 

4)は、Java 8のおかげで、あなたは(ビット複雑な操作を行うことができます)1つのライナー:

public static void main(String args[]) { 
    System.out.println(Arrays.stream(myarray).mapToInt(Integer::parseInt).sum()); 
} 
  • にこれらを変換する文字列のストリーム(Arrays.stream(args)
  • を作成します。 IntStream(mapToInt(Integer::parseInt)
  • でIntegerStreamの合計を取得する
0

内側のループは意味をなさないので、問題の原因と思われます。効果的にt * tループを実行しています。その場合は5 * 5であり、その結果、すべての1の入力に基づいて25の結果が得られます。

にのみ、このような入力配列の単一時間にわたってループする必要があります。

public static void main(String args[]) { 
    int t = args.length; 
    int[] u; 
    u = new int[t]; 
    int v = 0; 

    for (int i=0; i<t; i++) { 
     u[i]= Integer.parseInt(args[i]); 
     v = v + u[i]; 
    } 

    System.out.println(v); 
} 

サイドノートでは、あなたが使用して計画されていない限り、実際にはint型の配列を格納する理由はありませんそれは後に何か他のもののために。この特定の要件に基づいて、それが良いので、同じように書くことになります。

public static void main(String args[]) { 
    int length = args.length; 
    int total = 0; 

    for (int i = 0; i < length; i++) { 
     int number = Integer.parseInt(args[i]); 
     total += number; 
    } 

    System.out.println(total); 
} 
関連する問題