오답 노트-자바(Java)

24.11.03(일) "i냐 g냐, 그것이 문제로다."

writingforever162 2024. 11. 3. 12:31

[문제]

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; i++) {
             System.out.print(nations[i][g]+" ");
          }
          System.out.println();
       }
    }
}

REVIEW 003을 해결하고 신나서 자바 프로그램을 실행했다가 다시 표정이 굳어버렸다. 글쓰기가 취미라지만 오답 노트 쓰기를 좋아하진 않는데 왜 자꾸 산 넘어서 산일까. 해당 오류는 강의를 들으며 실습할 때도 몇 번 발생했으나, 반복문을 지우고 다시 쓰면 또 출력 행위가 잘만 이루어져서 그러려니 했다. 그러다 오늘 '누가 이기나 보자'라는 심보로 두 번째 틀린 그림 찾기를 했다.

 

[원인]

for (int i=0; i < nations.length; i++){
    for (int g=0; g < nations[i].length; i++) {
       // [오답] i++
       // [정답] g++
       System.out.print(nations[i][g]+" ");
    }
    System.out.println();
}

역시 원인은 처음에 오류 발견했다고 신나서 키보드를 급하게 두들긴 손에 있었다. 아무래도 nations[i].length를 입력하면서 g가 아닌 i를 적은 듯했다. 중첩된 for문의 조건식에서 이름을 g로 지어놓고는 왜 i라고 적었을까.

 

[해결]

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();
       }
    }
}

오답 노트를 기록하며 '급할수록 돌아가라'는 말이 떠올랐다. 어쩌면 이런 실수는 너무 사소하고 하찮아서 눈으로 쓱 반성하고 넘겨도 그만일 수 있겠지만, 배운 내용이 좀 가물가물하기만 해도 불안감이 쉽게 올라오는 사람으로서 그러기가 힘들다. 어쨌든 그렇게 실수한 코딩을 집요하게 물고 늘어진 덕분에 원인을 찾고 오류를 해결해서 뿌듯하다.