You are using an outdated browser. Please upgrade your browser to improve your experience.
package com.practiceExample.Doit.chap02;

import java.util.Scanner;

public class PhysicalExam {
  static final int VMAX = 21; //시력분포(0.0에서 0.1단위로 21개)

  static class PhyscData {
    String name;
    int height;
    double vision;

    public PhyscData(String name, int height, double vision) {
      this.name = name;
      this.height = height;
      this.vision = vision;
    }
  }

  static double aveHeight(PhyscData[] dat) {
    double sum = 0;

    for(int i = 0; i < dat.length; i++) {
      sum += dat[i].height;
    }
    return sum / dat.length;
  }

  static void distVision(PhyscData[] dat, int[] dist) {
    int i = 0;

    dist[i] = 0;
    for(i = 0; i < dat.length; i++) {
      if(dat[i].vision >= 0.0 && dat[i].vision <= VMAX / 10.0) {
        dist[(int)(dat[i].vision * 10)]++;
      }
    }
  }

  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    PhyscData[] x = {
        new PhyscData("박현규", 162, 0.3),
        new PhyscData("함진아", 173, 0.7),
        new PhyscData("호여이", 175, 2.0),
        new PhyscData("이수진", 171, 1.5),
        new PhyscData("김영준", 168, 0.4),
        new PhyscData("박용규", 169, 1.2),
    };
    int[] vdist = new int[VMAX];

    System.out.println("신체검사 리스트");
    System.out.println("이름       키    시력");
    System.out.println("----------------------");

    for(int i = 0; i < x.length; i++) {
      System.out.printf("%-8s%3d%5.1f\n",
          x[i].name, x[i].height, x[i].vision);
    }
    System.out.printf("\n평균 키 : %5.1fcm\n", aveHeight(x));
    distVision(x, vdist);

    System.out.println("\n시력 분포");
    for(int i = 0; i < VMAX; i++) {
      System.out.printf("%3.1f~:%2d명\n", i / 10.0, vdist[i]);
    }
  }
}