이번에는 저번에 만들었던
비만도가아닌
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();
}
}
다음과 같이 기능들을 함수화하면
틀린 부분을 쉽게 찾을 수 있어서
디버깅을 하기 쉬워진다는 장점이 있습니다.
긴 글 읽어주셔서 감사합니다!
'Java > 실습' 카테고리의 다른 글
[Java] 홀수만 출력 (1) | 2024.11.27 |
---|---|
[Java] 5부터 1까지 내림차순 (0) | 2024.11.27 |
[Java] 양수 or 음수 / 배수인지 (조건문 예제) (0) | 2024.11.27 |
[Java] 점수에 따라서 학점 부여하기(switch - case 문) (0) | 2024.11.27 |
[Java] 중복 case의 경우 (switch - case문) (0) | 2024.11.27 |