[문제]
public class SwitchPrac {
public static void main(String[] args) {
int age = 31;
if (age>50) {
age = 50;
}
if (age>40&&age<50) {
age = 40;
}
else if (age>30&&age<40) {
age = 40;
}
else if (age>20&&age<30) {
age = 40;
}
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;
}
}
}
오답 노트를 작성하는 지금이야 마음이 편하지만, 당시에는 원인이 바로 눈에 띄지 않아 식은땀이 흘렀다. 분명 if문과 else if문까지 썼는데 대체 어떤 코드를 잘못 작성한 걸까, 머리에 쥐가 날 정도였다.
[원인]
if (age>40&&age<50) {
age = 40;
}
else if (age>30&&age<40) {
age = 40;
}
else if (age>20&&age<30) {
age = 40;
}
원인은 if문을 복사해서 아래에 붙여 넣은 3가지 중 2가지만 고치고 넘어간 데에 있었다. if를 else if로 고치고, 소괄호 안에 있는 조건식까지 숫자를 바꿔쓰기까지는 잘했는데 'age = 40;'의 40을 그대로 놔두었다. else if라고 써서 문제가 생긴 건지 뚫어지도록 관찰했다가 원인을 깨닫는 순간, 이 경험은 무조건 기록해 두기로 마음먹었다. 앞으로 몇 줄인지 셀 엄두조차 나지 않을 코드를 다룰 테고, 일일이 코드를 작성하기보다 복사 및 붙여넣기로 끝낼 때도 종종 있을 텐데 그럴 때마다 발생하기 쉬운 실수 같았다. 원인을 찾았을 당시 약간 허무감이 밀려오긴 했으나, 일찍 깨달아서 다행이라는 안도감이 더 크게 왔다.
[해결]
public class SwitchPrac {
public static void main(String[] args) {
int age = 25;
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(화) "53대 이상입니다." (0) | 2024.10.30 |