あくまで例です。(コードが汚いのは許してください)
エラーやSJIS以外のことは考えてはいません。
あと、できる限り縦は揃えるようにしてますが、完ぺきではないかもしれません。
コマンドには「名前:点数 名前:点数 名前:点数」と入力することを想定。
Java
1import java.math.BigDecimal;
2import java.nio.charset.Charset;
3
4public class CommandTest {
5
6 public static void main(String[] args) {
7 String[] names = new String[args.length];
8 Integer[] scores = new Integer[args.length];
9 int sum = 0; //平均値求めるのに使う
10 int sum2 = 0; //分散を求めるのに使う
11 Charset charset = Charset.forName("Shift_JIS");
12
13
14 //先にコマンドの値を配列に詰める(名前:点数で入力されているイメージ)
15 for(int i = 0; i < args.length; i++){
16 String[] p = args[i].split(":");
17 names[i] = p[0];
18 scores[i] = Integer.valueOf(p[1]);
19 sum += scores[i];
20 sum2 += scores[i] * scores[i];
21 }
22
23 //標準偏差を計算する
24 double avg = sum / (double)scores.length;
25 double var = sum2 / (double)scores.length - avg * avg;
26 double sd = Math.sqrt(var);
27
28 for(int i=0; i < names.length; i++ ){
29 System.out.format("%-16s", names[i]);
30 }
31 System.out.println();
32
33 for(int i=0; i < scores.length; i++){
34 int width = names[i].getBytes(charset).length/2 + 16;
35 System.out.format("%-" + width +"s", scores[i]);
36 }
37 System.out.println();
38
39 for(int i=0; i < scores.length; i++){
40 double deviationValue = 50 + 10 * ((scores[i] - avg)/sd);
41 BigDecimal x = new BigDecimal(deviationValue);
42 x = x.setScale(2, BigDecimal.ROUND_HALF_UP);
43 int width = names[i].getBytes(charset).length/2 + 16;
44 System.out.format("%-" + width +"s", x);
45 }
46 }
47
48}
49
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。