[ 문제 ]

여러 명의 성명,키,몸무게를 입력받아 처리 조건에 따라 신체 질량지수와 비만 정도를 판단하여 출력하는 프로그램을 작성하라.

신체 질량지수(Body Mass Index, BMI)는 체중(KG기준)을 키(m 기준)의 제곱으로 나눈 수치이다. 신체 질량지수는 소수 첫째 자리에서 반올림한다.

비만정도는 신체 질량지수를 사용하여 아래와 같이판단한다.

  1. 비만 : BMI>30
  2. 과체중 : 25≤BMI≤ 30
  3. 정상 : 19≤ BMI ≤ 24
  4. 저체중: BMI <19
package Bmi;

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
		
		
		Scanner scanner = new Scanner(System.in);
		BmiService service = new BmiService();
		BmiUI ui = new BmiUI(scanner, service);
		
		ui.bmiUI(); 
		ui.showResult();
		
		
	}
}

package Bmi;

public class BmiService {
	public double bmiCalculate(PersonDataDTO dto) { 
		double result = 0;
		
		
		double height = dto.getHeight();
		double weight = dto.getWeight();
		
		double bmi =  weight / Math.pow(height, 2);
		
		result = bmi;
		
		return result;
		
	}
}

package Bmi;

import java.util.Scanner;

public class BmiUI {
	Scanner scanner; 
	BmiService service; 
	String name; 
	double height, weight; 

	public BmiUI(Scanner scanner, BmiService service) {
		super();
		this.scanner = scanner;
		this.service = service;
	}

	public void bmiUI() { //화면에 입/출력만 담당 

		System.out.println("이름을 입력하세요");
		name = scanner.nextLine();

		System.out.println("키를 입력하세요");
		height = Double.parseDouble(scanner.nextLine());

		if (height >= 200) {
			System.out.println("다시 입력해주세요");
			bmiUI();
		}

		System.out.println("몸무게를 입력하세요");
		weight = Double.parseDouble(scanner.nextLine());

		if(weight >= 200) {
			System.out.println("다시 입력해주세요");
			bmiUI(); 
		}

		System.out.println("이름: "+name+" 키: "+height+"cm"+" 몸무게: "+weight+"kg");

	}

	public void showResult() {

		PersonDataDTO dto = new PersonDataDTO(name, height, weight);
		double bmi = service.bmiCalculate(dto);
		System.out.println("당신의 BMI지수는 "+bmi+ " 입니다");

	}
}

package Bmi;

public class PersonDataDTO {
	private String name;
	private double height;
	private double weight;
	
	
	public String getName() { //private처리한 데이터를 외부에서 호출할수 있게 getter생성
		return name;
	}

	public double getHeight() {
		return height;
	}

	public double getWeight() {
		return weight;
	}

	public PersonDataDTO(String name, double height, double weight) {
		super();
		this.name = name;
		this.height = height;
		this.weight = weight;
	}

	@Override
	public String toString() {
		return "PersonDataDTO [name=" + name + ", height=" + height + ", weight=" + weight + "]";
	}
}