質問: i; } System.out.printf("\t%d位 %d組 %3dポイント", ranking[j], classNumber[j][i], classPoint[j][i]); } System.out.println(); } } } ``` ### 試したこと コンパイラしたときに一年の隣に一年の平均ポイント、二年の隣に二年の平均ポイント、三年の隣に三年の平均ポイントを表示できるよう試そうとしましたが分かりませんでした ### 補足情報(言語/FW/ツール等のバージョンなど) java初心者なのでわかりやすく説明をお願いします。
回答: Javaではなく他の言語では組めますか? 私なら、平均値を求めるメソッドを作成してそれを呼び出して取得します。 引数は、 ■ int型"配列" ( 対象 ) です。 たとえば、 対象1~5 まであって、それぞれを a, b, c, d, ... とします。 で、これだと面倒なので、 int型配列 target[] を要素数 = 対象の数 として生成し、格納していく。 ``` int[] target = new int[5]; // 1-5の 5つなので。 target[0] = a; target[1] = b; ... // 以下略 ``` この target[] を作成したメソッドに渡す。 で、戻り値が 平均値。 平均値の計算はご存知ですよね? 全体の和 ÷ 個数 = 平均値 ですよね。 全体の和... これって、1番目から end番目 までの足し算です。 なので、for文を使って 現在の総和 に データを加えていく。 ``` // 対象となる配列を int[] target とする。 int sum; // 総和用変数 for( int i = 0; i < target.length(); i++ ){ sum = sum + target[i]; // 現在の総和に 現在位置の値を追加する。 } ``` であとは、総和 割る 個数 とすればいい。 個数は 配列のlength() で取得できるので、 ``` double ans = sum / target.length(); ``` のようにする。 本来は もしかすると int型配列じゃなく double型配列の可能性がありますが、 私は計算が苦手なので、チェックしていません。 ですが、ロジック的な部分は大丈夫だと思います。 また、戻り値はできればdoubleかfloatがいいと思います。 理由としては 平均値を求める式に割り算があるから。 たとえば、 整数として割り切れないときがあります。 答えが 3.85 とか。 ですが、intとすると 小数点以降無視されるようなので、 3 となってしまいます。 四捨五入すると本来は ( 小数点一桁目 で四捨五入するとして。 ) 8 なので 切り上げ ( その前の数字に +1 ) で 4 になるはずです。 ですが、3 に。 計算間違いとされますので。