LoginSignup
3
3

More than 5 years have passed since last update.

10人の点数と偏差値を一覧表示

Last updated at Posted at 2016-02-28

10人の点数と偏差値を一覧表示

全員が100点や0点などの分散0のときを考慮して作成した。
偏差値算出式や結果正誤確認のため、偏差値算出サイトで確認したが、
全員0点の場合の0点での偏差値はエラーになって確認できなかった。
あれ?偏差値50でないのかな?
ここでは特に問題でないので先へ。

1人目の点数を入力してください 60
2人目の点数を入力してください 60
3人目の点数を入力してください 60
4人目の点数を入力してください 60
5人目の点数を入力してください 60
6人目の点数を入力してください 0
7人目の点数を入力してください 0
8人目の点数を入力してください 0
9人目の点数を入力してください 0
10人目の点数を入力してください 0
1人目 素点60点 偏差値60.0
2人目 素点60点 偏差値60.0
3人目 素点60点 偏差値60.0
4人目 素点60点 偏差値60.0
5人目 素点60点 偏差値60.0
6人目 素点0点 偏差値40.0
7人目 素点0点 偏差値40.0
8人目 素点0点 偏差値40.0
9人目 素点0点 偏差値40.0
10人目 素点0点 偏差値40.0

Stdscore.java
import java.util.Scanner;
class Stdscore{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int i,j=0,total=0,n[]=new int[10];

        for(i=0;i<n.length;i++){
            System.out.print(i+1 + "人目の点数を入力してください ");
            n[i] = scan.nextInt();
            total = total + n[i];
            j = j + (int)Math.pow(n[i],2);
        }

        double average = (double)total/n.length;
        double bunsan = (double)j/n.length - Math.pow(average,2);
        double hensachi=0;

        for(i=0;i<n.length;i++){
            if(bunsan == 0){
                hensachi = 50.0;
            }else{ 
                hensachi = (double)(n[i] - average)/Math.sqrt(bunsan) * 10 + 50; 
            }
            System.out.println(i+1 + "人目 素点"+ n[i] + "点  偏差値" + hensachi);
        }
    }
}

平均や分散の算出処理は、mainメソッドでなく、別メソッドに切り出す様に
手直し。
処理は適度に分けた方が見た際に理解しやすく開発時にいいらしい。

もちろん結果は変わらない。

Stdscore2.java
import java.util.Scanner;
class Stdscore2{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int i,n[]=new int[10];

        for(i=0;i<n.length;i++){
            System.out.print(i+1 + "人目の点数を入力してください ");
            n[i] = scan.nextInt();
        }

        double average = Ave(n);
        double bunsan = Bunsan(n);
        double hensachi=0;

        for(i=0;i<n.length;i++){
            if(bunsan == 0){
                hensachi = 50.0;
            }else{ 
                hensachi = (double)(n[i] - average)/Math.sqrt(bunsan) * 10 + 50; 
            }
            System.out.println(i+1 + "人目 素点"+ n[i] + "点  偏差値" + hensachi);
        }
    }

    private static double Ave(int[] n){
        int total=0,i;
        for(i=0;i<n.length;i++){
            total = total + n[i];
        }
        return (double)total/n.length;
    }

    private static double Bunsan(int[] n){
        int j=0,i;
        for(i=0;i<n.length;i++){
            j = j + (int)Math.pow(n[i],2);
        }
        return (double)j/n.length - Math.pow(Ave(n),2);
    }
}

長くなった気もするが、確かに理解はしやすいかも。
でも今の私の理解だと
private static double Ave(int[] n)とかreturnとか忘れそう。。

あとprintlnprintとすることで改行されないことに気づいた。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3