前提・実現したいこと
先ほどの質問から引き続き、コマンドライン引数から成績を処理するコードをつくっている途中に以下のエラーメッセージが発生しました。
解決方法を教えてください。お願いします。
ちなみにコマンドライン引数は以下の通りです。
「Anne 100 Glbert 99 Diana 60 Emily 89 Bryce 79 Jane 74 Kilmeny 42 Marigold 64」
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 8 out of bounds for length 8 at hello.Seiseki1.main(Seiseki1.java:14)
該当のソースコード
java
1package hello; 2 3public class Seiseki1 { 4 5 6 public static void main(String[] args) { 7 int i; 8 int total = 0; 9 int n = args.length/2; 10 String names[] = new String[n]; 11 double score[][] = new double[n][2]; 12 13 for(i = 0; i <args.length; i += 2 ) { 14 names[i] = args[i]; 15 score[i][0] = Double.parseDouble(args[i + 1]); 16 total += score[i][0]; 17 } 18 double average = (total/(args.length/2)); 19 double ssum = 0.0; 20 ssum += sqr(score[i][0] - average); 21 double variance = ssum / (args.length/2); 22 double sd = Math.sqrt(variance); 23 double hensachi = 50 + (score[i][0] - average)/sd * 10; 24 25 26 System.out.println("Average = " + average); 27 System.out.println("Standard Deviation = " + sd); 28 29 for(i = 0; i <score.length; i++) { 30 score[i][1] = hensachi; 31 32 33 System.out.print(" " + names[i] + " "); 34 System.out.print(score[i][0] + " "); 35 System.out.println(hensachi); 36 } 37 38 39 } 40 41 42 43 private static double sqr(double d) { 44 return d * d; 45 } 46} 47
試したこと
forの条件式を変えたりしたのですが、うまくいきません。
補足情報
最終的な形は以下の通りにしたいと思っています。
Average = 75.9 Standard Deviation = 18.85 Anne Glbert Diana Emily Bryce Jane Kilmeny Marigold Score 100 99 60 89 79 74 42 64 StdScr 62.8 62.3 41.6 57.0 51.7 49.0 32.0 43.7
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/08 06:06
2020/07/08 07:43 編集
2020/07/08 07:48