[문제]
public class SwitchPrac {
public static void main(String[] args) {
int age = 53;
if (age>40&&age<50) {
age = 40;
}
else if (age>30&&age<40) {
age = 30;
}
else if (age>20&&age<30) {
age = 20;
}
if (age<20) {
System.out.println("20이라고 다시 연령대를 입력해주세요. 프로그램을 종료합니다.");
System.exit(0);
}
switch (age) {
case 20:
System.out.println(age+"대입니다.『나의 하루는 4시 30분에 시작된다』책을 추천합니다.");
break;
case 30:
System.out.println(age+"대입니다.『달팽이 식당』책을 추천합니다.");
break;
case 40:
System.out.println(age+"대입니다.『돈은 좋지만 재테크는 겁나는 너에게』책을 추천합니다.");
break;
default:
System.out.println(age+"대 이상입니다.『최재천의 공부』책을 추천합니다.");
break;
}
}
}
50 이상은 전부 '50대 이상입니다.'라고 default 안에 작성한 문장이 출력되어야 하는데, 정수형 int 변수에 넣은 값이 그대로 출력되었다.
[원인]
if (age>50) {
age = 50;
}
변수 age에 저장되는 값이 20 미만일 때는 프로그램이 종료되도록 설정하고, 40대까지는 if문과 else if문으로 age에 수정된 값이 저장되도록 설정했으나 50 이상인 값이 저장되는 상황에 맞는 조건을 추가하지 않았다.
[해결]
public class SwitchPrac {
public static void main(String[] args) {
int age = 53;
if (age>50) {
age = 50;
}
if (age>40&&age<50) {
age = 40;
}
else if (age>30&&age<40) {
age = 30;
}
else if (age>20&&age<30) {
age = 20;
}
if (age<20) {
System.out.println("20이라고 다시 연령대를 입력해주세요. 프로그램을 종료합니다.");
System.exit(0);
}
switch (age) {
case 20:
System.out.println(age+"대입니다.『나의 하루는 4시 30분에 시작된다』책을 추천합니다.");
break;
case 30:
System.out.println(age+"대입니다.『달팽이 식당』책을 추천합니다.");
break;
case 40:
System.out.println(age+"대입니다.『돈은 좋지만 재테크는 겁나는 너에게』책을 추천합니다.");
break;
default:
System.out.println(age+"대 이상입니다.『최재천의 공부』책을 추천합니다.");
break;
}
}
}
예외 상황을 깜빡 잊으면 어떤 문제가 발생하는지 알 수 있었다. [원인]에서 발견한 코드를 추가로 작성한 결과, 의도한 대로 문장이 잘 출력되었다.
'오답 노트 > 오답 노트-자바(Java)' 카테고리의 다른 글
24.11.13(수) "변수 전용 작명소는 없나요?" (1단계 계산기) (0) | 2024.11.24 |
---|---|
24.11.06(수) "뭐야, 내 3만 원 돌려줘요." (0) | 2024.11.07 |
24.11.03(일) "i냐 g냐, 그것이 문제로다." (0) | 2024.11.03 |
24.11.03(일) "int indexN < nations.length;" (0) | 2024.11.03 |
24.10.29(화) "31세도 40대, 25세도 40대입니다." (0) | 2024.10.30 |