[문제]
public class ArrayPrac4 {
public static void main(String[] args) {
String[][] nations = {
{"싱가포르","말레이시아","인도네시아","베트남","태국"},
{"그리스","독일","이탈리아","스위스","폴란드"},
{"우간다","에티오피아","탄자니아","케냐","모로코"}
};
for (int indexN=0; int indexN < nations.length; indexN++){
for (int indexEach=0; indexEach < nations[indexN].length; indexEach++) {
System.out.print(nations[indexN][indexEach]+" ");
}
System.out.println();
}
}
}
혹시 괄호를 누락했나, 아니면 세미콜론(;)을 누락했나 뚫어지도록 쳐다봤으나, 오류는 해결되지 않았다. 아예 for문을 새로 입력했을 때는 또 프로그램이 멀쩡하게 작동해서 오류 난 화면을 사진으로 저장해서 둘을 비교했다. 표현 그대로 틀린 그림 찾기를 했다.
[원인]
for (int indexN=0; int indexN < nations.length; indexN++){
// [오답] int indexN < nations.length;
// [정답] indexN < nations.length;
for (int indexEach=0; indexEach < nations[indexN].length; indexEach++) {
System.out.print(nations[indexN][indexEach]+" ");
}
System.out.println();
}
원인은 바로 for문을 작성할 때 조건식을 잘못 쓴 데에 있었다. 변수 타입을 맨 처음에만 써야 하는데 두 번째에도 int라고 정수형 타입을 쓰는 바람에 오류가 났다.
for (int i=0; int i < nations.length; i++){
// [오답] int i < nations.length;
// [정답] i < nations.length;
for (int g=0; g < nations[i].length; g++) {
System.out.print(nations[i][g]+" ");
}
System.out.println();
}
indexN이라는 변수 이름을 i로, indexEach라는 이름을 g로 바꾸고 나니 조건식에서 두 번 적힌 int가 훨씬 눈에 잘 들어왔다.
[해결]
public class ArrayPrac4 {
public static void main(String[] args) {
String[][] nations = {
{"싱가포르","말레이시아","인도네시아","베트남","태국"},
{"그리스","독일","이탈리아","스위스","폴란드"},
{"우간다","에티오피아","탄자니아","케냐","모로코"}
};
for (int i=0; i < nations.length; i++){
for (int g=0; g < nations[i].length; g++) {
System.out.print(nations[i][g]+" ");
}
System.out.println();
}
}
}
어쩌면 조건식을 작성할 때 변수 이름을 간단하게 알파벳으로만 지었으면 틀린 부분을 금방 찾아냈을지 모른다. 인덱스(index)가 무엇이며 0이 첫 번째라는 사실 등등 숙지했으니, 앞으로 조건식을 작성할 때는 이름을 최대한 짧게 짓기로 했다.
'오답 노트 > 오답 노트-자바(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.10.29(화) "31세도 40대, 25세도 40대입니다." (0) | 2024.10.30 |
24.10.29(화) "53대 이상입니다." (0) | 2024.10.30 |