[문제]
희윤이는 '성문이 두마리 치킨' 가게를 운영하고 있다.
치킨집을 운영하다 보니 매일 치킨을 먹게 되었다.
그러던 어느 날 몸무게를 재어보니 80kg이 나가는 것을 보고 깜짝 놀랐다.
희윤이 여자친구는 비만인 사람을 제일 싫어 하므로 희윤이는 절대 비만이면 안 된다.
희윤이가 비만인지 아닌지 판별하는 프로그램을 작성하시오.
[조건]
[한글코딩]
/* 스캐너로 입력을 받는다.
*
* 키를 입력받을 변수 선언
* 키를 입력받음
* 정상적인 입력인지 유효성 검사
*
* 몸무게를 입력받을 변수 선언
* 몸무게를 입력받음
* 정상적인 입력인지 유효성 검사
*
* 표준 몸무게를 저장할 변수를 하나 선언한다.
* 표준 몸무게를 계산하는 식을 세운다.
*
* 비만도를 계산할 변수를 하나 선언한다.
* 비만도를 계산하는 식을 세운다.
*
* if(만약 비만도가 10 이하라면) {
* sout("정상입니다.");
* } else (만약 비만도가 10 초과 20 이하라면) {
* sout ("과체중입니다.");
* } else {
* sout("비만입니다.");
*
*
* 정확한 입력을 받을 때까지 반복해야 하므로 while문
* 유효성 검사는 if문으로 작성하고 정확하지 않을 시 다시 입력하도록
* 정확한 정보를 입력하면 while문을 탈출하도록 함
* */
[코드 작성]
package codeup;
import java.util.Scanner;
public class CodeUp1228 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double height;
double weight;
while(true) {
System.out.println("키를 입력하세요");
height = sc.nextDouble();
if(height <= 100 && height >= 200) {
System.out.println("올바른 정보를 다시 입력해주세요.");
continue;
}
System.out.println("몸무게를 입력하세요");
weight = sc.nextDouble(); // 수정
if(weight <= 30.0 && weight >= 130.0) {
System.out.println("올바른 정보를 다시 입력해주세요.");
continue;
}
break;
}
double standard = (height - 100.0) * 0.9;
double obesity = ((weight - standard) * 100.0) / standard;
System.out.printf("비만도는 %.2f %%입니다.\n", obesity);
if(obesity < 10.0) {
System.out.println("정상입니다.");
} else if (obesity > 10.0 && obesity <= 20.0) {
System.out.println("과체중입니다.");
} else {
System.out.println("비만입니다.");
}
}
}
비만도 출력 시 println을 사용했더니 소숫점이 보기 싫어서 소숫점을 2자리까지만 출력하도록 printf와 문자열 포맷을 이용하였다.
[문자열 포맷] : 원하는 형식을 지정하여 출력
System.out.printf
- %f : 실수 출력
- %d : 정수 출력
- %s : 문자열 출력
중간에 이런 오류가 떴었는데 실수로 실수를 정수 형식으로 받아서 오류가 난 것이었다. nextDouble()로 바꾸어서 문제 해결!
'IT > JAVA' 카테고리의 다른 글
Java Section 01 : 자바 프로그래밍의 기본 (2) | 2025.01.02 |
---|---|
Day 5 - 배열 문제 풀이 (0) | 2025.01.02 |
Day 4 - 반복문(for) 예제 풀이 (0) | 2024.12.31 |
[JAVA] 정수 2개를 입력받고 랜덤수 3개 출력하기 (0) | 2024.12.31 |
반복문 별 찍기 (0) | 2024.12.31 |