본문 바로가기

Java/실습

[Java] BMI 계산 프로그램

이번에는 저번에 만들었던

 

비만도가아닌

 

BMI를 구하는 프로그램을

 

함수를 이용해서 만들도록 하겠습니다.

 

import java.util.Scanner;

 

public class CMain5 {

 

public static void endProgram () {

Scanner sc = new Scanner(System.in);

System.out.println("Y를 입력하면 프로그램 종료");

String s = sc.next();

if (s.equals("Y")) {

return;

}

else endProgram();

}

public static void BMI() throws InterruptedException {

Scanner sc = new Scanner(System.in);

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■비만도 검사 프로그램을 시작합니다.■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■ 이름을 입력하세요 ▼ ■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

String name = sc.next();

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■ 키를 입력하세요(M)▼ ■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

double height = sc.nextDouble();

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■ 몸무게를 입력하세요(kg) ▼ ■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

double weight = sc.nextDouble();

double BMI = weight / (height * height);

 

String BMI_statement = "";

if (BMI < 18.5) {

BMI_statement = "저체중";

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

BMI_statement = "정상";

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

BMI_statement ="과체중";

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

BMI_statement ="경도비만";

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

BMI_statement ="중증도비만";

} else if (BMI > 40) {

BMI_statement ="고도비만";

}

System.out.print("비만도 계산 중");

Thread.sleep(1000);

System.out.print(".");

Thread.sleep(1000);

System.out.print("");

System.out.print(".");

Thread.sleep(1000);

System.out.print("");

System.out.print(".\n");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.printf("■ %s님의 결과입니다. ■\n",name);

System.out.printf("■ BMI는 %.1f 당신은 %s입니다.■\n",BMI,BMI_statement);;

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

endProgram();

 

}

public static void main(String[] args) throws InterruptedException {

BMI();

}

}

 

제가 짠 코드입니다.

 

시간이 많아서 콘솔 UI에도 집중을 했는데요.

 

Scanner sc = new Scanner(System.in);

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■비만도 검사 프로그램을 시작합니다.■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■ 이름을 입력하세요 ▼ ■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

String name = sc.next();

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■ 키를 입력하세요(M)▼ ■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

double height = sc.nextDouble();

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■ 몸무게를 입력하세요(kg) ▼ ■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

double weight = sc.nextDouble();

double BMI = weight / (height * height);

 

먼저 이름, 키와 몸무게를 입력받아서

 

BMI 구하는 공식을 이용해

 

BMI를 구합니다. 

 

이때 키의 단위는 (M)입니다.

 

if (BMI < 18.5) {

BMI_statement = "저체중";

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

BMI_statement = "정상";

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

BMI_statement ="과체중";

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

BMI_statement ="경도비만";

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

BMI_statement ="중증도비만";

} else if (BMI > 40) {

BMI_statement ="고도비만";

}

 

BMI에 따라서 

 

if문을 사용해서 

 

사용자의 상태를 알려줍니다.

 

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.printf("■ %s님의 결과입니다. ■\n",name);

System.out.printf("■ BMI는 %.1f 당신은 %s입니다.■\n",BMI,BMI_statement);;

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

 

BMI수치와 사용자의 상태를 출력하고

 

public static void endProgram () {

Scanner sc = new Scanner(System.in);

System.out.println("Y를 입력하면 프로그램 종료");

String s = sc.next();

if (s.equals("Y")) {

return;

}

else endProgram();

}

 

Y를 누르면 프로그램이 종료되게 만들었습니다.

 

이때는 문자열을 입력받고

 

equals기능을 써서 문자열과

 

'Y'가 같은지 비교 후 맞으면 리턴

 

아니면 재귀함수를 통해 다시 입력 받도록 했습니다.

 

▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤

■비만도 검사 프로그램을 시작합니다.■

▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤

▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤

■ 이름을 입력하세요 ▼ ■

▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤

김래현

▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤

■ 키를 입력하세요 ▼ ■

▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤

1.75

▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤

■ 몸무게를 입력하세요 ▼ ■

▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤

73

비만도 계산 중...

▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤

■ 김래현님의 결과입니다. ■

■ BMI는 23.8 당신은 정상입니다.■

▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤

Y를 입력하면 프로그램 종료

 

 

출력 내용입니다.

 

강사님의 요청으로 위 코드들을 함수화해봤는데요.

 

import java.util.Scanner;

 

public class CMain5 {

 

public static void endProgram () {

Scanner sc = new Scanner(System.in);

System.out.println("Y를 입력하면 프로그램 종료");

String s = sc.next();

if (s.equals("Y")) {

return;

}

else endProgram();

}

public static void start() {

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■비만도 검사 프로그램을 시작합니다.■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

}

public static String getName() {

Scanner sc = new Scanner(System.in);

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■ 이름을 입력하세요 ▼ ■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

String name = sc.next();

return name;

}

public static double getHeight() {

Scanner sc = new Scanner(System.in);

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■ 키를 입력하세요 ▼ ■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

double height = sc.nextDouble();

return height;

}

public static double getweight() {

Scanner sc = new Scanner(System.in);

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.println("■ 몸무게를 입력하세요 ▼ ■");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

double weight = sc.nextDouble();

return weight;

}

public static String judgeBMI(double BMI, String name) throws InterruptedException {

String BMI_statement = "";

if (BMI < 18.5) {

BMI_statement = "저체중";

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

BMI_statement = "정상";

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

BMI_statement ="과체중";

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

BMI_statement ="경도비만";

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

BMI_statement ="중증도비만";

} else if (BMI > 40) {

BMI_statement ="고도비만";

}

System.out.print("비만도 계산 중");

Thread.sleep(1000);

System.out.print(".");

Thread.sleep(1000);

System.out.print("");

System.out.print(".");

Thread.sleep(1000);

System.out.print("");

System.out.print(".\n");

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

System.out.printf("■ %s님의 결과입니다. ■\n",name);

System.out.printf("■ BMI는 %.1f 당신은 %s입니다.■\n",BMI,BMI_statement);;

System.out.println("▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤■▤");

return BMI_statement;

}

public static double BMI(double height, double weight) {

return weight / (height * height);

}

public static void BMI() throws InterruptedException {

Scanner sc = new Scanner(System.in);

 

start();

String name = getName();

judgeBMI(BMI(getHeight(), getweight()),name);

endProgram();

 

}

public static void main(String[] args) throws InterruptedException {

BMI();

}

}

 

다음과 같이 기능들을 함수화하면

 

틀린 부분을 쉽게 찾을 수 있어서

 

디버깅을 하기 쉬워진다는 장점이 있습니다.

 

긴 글 읽어주셔서 감사합니다!