오답 노트/오답 노트-자바(Java)

24.11.03(일) "int indexN < nations.length;"

writingforever162 2024. 11. 3. 12:10

[문제]

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이 첫 번째라는 사실 등등 숙지했으니, 앞으로 조건식을 작성할 때는 이름을 최대한 짧게 짓기로 했다.