foreach문 작성 과정에서 발생한 에러 노트

🙏 내가 원했던 결과
1번째 요소는 ABC입니다.
2번째 요소는 DEF입니다.
...
이처럼 배열 a의 요소 순서와 값이 차례로 나오게 출력하기 위해서 foreach를 이용해 반복문을 작성했다.
나는 변수 i가 일반 for문처럼 0으로 시작하고, i 옆의 변수 a에 해당 순서의 배열 요소 값이 저장된다고 생각했다. 그래서 printf()에서 i는 정수로 변환해 %d에, a는 %s에 나타내려고 했다.
에러가 잡히지 않아서 일단 자신만만하게 실행했다 하지만 . . .

⛔ NumberFormatException 에러 발생
다시 찬찬히 살펴 보니 내가 "ABC"을 정수로 변환하려고 했다는 사실을 발견했다...
i는 증감식에 사용되는 숫자가 아니라 해당 순서의 배열 요소 값이 저장되는 변수였다.
a는 변수가 아니고... 그냥 반복할 배열 이름을 지정하는 것이었음
String i에서 이상한걸 느꼈어야 했는데 왜 당연히 숫자로 생각하고 갖다썼지...?


✅ 해결 방법
foreach문 안에서는 증감식의 값을 저장하는 변수가 따로 없는 것 같아서 순서를 저장할 변수 n을 새로 생성했다. 문제 해결^_^
📄 전체 코드
package chapter05;
public class ch05_5 {
public static void main(String[] args) {
String[] a = { "ABC","DEF","GHI","JKL","MNO","PQR","STU" };
int n = 1;
// for(배열의 타입 변수이름 : 배열이름) {}
for(String i:a) {
System.out.printf("%d번째 요소는 %s입니다.%n",n,i);
n++;
}
}
}