본문 바로가기

Java/실습

[Java] 환자의 BMI 구해주기

환자와 의사 클래스를 만들어서

의사가 환자의 BMI를 구해주고

진단해주는 프로그램을 만들려고합니다.

환자 클래스에서는 키와 몸무게 나이

이름 등의 정보를 선언하고

의사 클래스를 BMI를 구해주고 진단해주려고 합니다.

먼저 환자 클래스를 볼까요?

 

import java.util.Scanner;

public class Customer {

String name = "홍길동";

int age = 45;

double height;

double weight;

}

 

환자의 클래스에 멤버변수를 선언해주는 것만으로

환자의 역할은 끝이납니다.

이때 키와 몸무게는 입력받아야하므로

선언만 해둡니다.

 public class Doctor {

String name = "김래현";

int age = 26;

Scanner sc = new Scanner(System.in);

public void start(Customer c) {

System.out.printf("%d세 %s환자분 들어오세요\n",c.age,c.name);

System.out.println();

System.out.printf("안녕하세요 %s 의사선생님!\n", name);

System.out.println();

System.out.println("환자분 키는 어떻게 되세요?");

c.height = sc.nextDouble();

System.out.println();

System.out.println("몸무게는요?");

System.out.println();

c.weight = sc.nextDouble();

 

다음은 Doctor클래스입니다.

손님의 키와 몸무게를 입력받아서

손님 클래스의 키와 몸무게 변수에 넣습니다.

 

c.height /= 100; 

이때 키는 m단위로 계산하기 때문에

키를 100으로 나눠줍니다.

 

double bmi = getBMI(c.height, c.weight);

System.out.println();

System.out.printf("비만도는 %.1f이시고...\n", bmi);

System.out.println();

System.out.printf("%s이시네요", judgeBMI(bmi));

System.out.println();}

 

다음은 진단을 출력하는 출력문입니다.

이 부분은 넘어가고 진단 메소드를 살펴보겠습니다.

public double getBMI(double height, double weight) {

double bmi = weight / (height * height);

return bmi;

}

BMI를 구해주는 메소드입니다.

이때 파라미터로 손님의 키와 몸무게를 전달받습니다.

 public String calcBMI(double bmi){

if (bmi < 18.5) {

return("저체중");

} else if (bmi > 18.5 && bmi < 25) {

return("정상");

} else if (bmi > 25 && bmi < 30) {

return("과체중");

} else if (bmi > 30 && bmi < 35) {

return("경도 비만");

} else if ( bmi > 35 && bmi < 40) {

return("중도 비만");

} else if (bmi > 40) {

return("고도 비만");}

return null;

}

그리고 judgeBMI에서는

BMI의 결과에 따라서

사용자에게 비만정도를 알려줍니다.

 

다시 처음으로 돌아가서

public void start(Customer c) {

함수의 헤더를 보면

이 부분이 핵심인데요.

주소 값을 같게,

즉 같은 클래스의 객체를 사용하기 위해서

main에서 선언한 customer객체를

파라미터로 전달 받아서 사용합니다.

이렇게 하지 않고 

Doctor 클래스에서 customer 객체를

재선언하게 되면 

다른 주소값을 가진 객체를 사용하기 때문에

변수 초기화에 문제가 생길 수 있습니다.

public static void main(String[] args) {

Customer c = new Customer();

Doctor d = new Doctor();

d.start(c);}

이렇게 main에서 객체를 생성하고

파라미터로 customer 객체를 넘겨주는 형식인거죠.

 

45세 홍길동환자분 들어오세요

 

안녕하세요 김래현 의사선생님!

 

환자분 키는 어떻게 되세요?

163

 

몸무게는요?

 

62

 

비만도는 23.3이시고...

 

정상이시네요

 

잘 출력되네요!

객체와 메소드의

파라미터 전달을 사용한

실습이었습니다.

 

'Java > 실습' 카테고리의 다른 글

[Java] Up Down 대회  (0) 2024.12.10
[Java] 동전 홀 짝 맞추기  (0) 2024.12.10
[Java] 기본값  (0) 2024.12.06
[Java] Phone  (0) 2024.12.06
[Java] 버스 - 메소드  (0) 2024.12.06