반응형
자바에서는 다음과 같이 컴파일 에러로 variable _ is already defined in method ____ 식의 에러가 뜨는 경우가 있다. 이는 직역하면 변수 _ 가 이미 메소드 ___ 에서 정의되었다는 뜻이다.
Main.java:19: error: variable i is already defined in method main(String[])
for(int i = 0 ; i < B ; i-- ){
^
1. 문제 발생 이유
이 에러는 한 변수를 두 번 선언할 경우 생긴다. 자바에서 변수에 대한 선언은 한 번만 하면 되고, 이후 다른 값을 해당 변수에 할당하고 싶다면 다음과 같이 선언이 아니라 저장을 해야 한다.
//선언을 두 번 하게 되어 컴파일 에러 발생
int A = 0;
int A = 123;
//변수에 설정된 값을 바꾸고 싶다면 선언이 아니라 저장을 해야 함
int A = 0;
A = 123
특히 이중 for 문을 사용할 때 이 에러를 놓치기 쉽다. for문에서 ( ; ; )안에 있는 변수는 루프가 끝나면 사라지게 된다. 그러나 for 문 안에 또 다른 for 문이 있는 경우, ( ; ; ) 안에 같은 변수를 선언해서는 안 된다. 이는 루프가 사라지기 전에 하나의 변수를 두 번 선언하게 되는 것이므로 variable __ is already defined in method ______ 에러가 생기기 때문이다. 다음은 에러가 생기게 되는 구조를 간략하게 보여주는 예시이다.
public class Main{
public static void main(String[] args){
for(int i = 0 ; i < A ; i++ ){
for( int i = 0 ; i < B ; i-- ){ //이중 for 문 구조에서 i를 두 번 선언하여 에러 발생
}
}
}
}
위 예시에서는 main에서 int 형 변수 i를 두 번 선언하는 문제가 발생했다. 따라서 다음과 같은 컴파일 에러를 보여주게 된다.
Main.java:19: error: variable i is already defined in method main(String[])
for(int i = 0 ; i < B ; i-- ){
^
2. 문제 해결 방법
한 변수를 두 번 이상 선언하지 않으면 된다.
//코드에서 선언을 여러 번 한 부분을 찾아 수정해야 한다
int A = 0;
int A = 123;
반응형
'🖥️Languages > ☕JAVA' 카테고리의 다른 글
[자바/컴파일 에러] not a statement (0) | 2021.08.02 |
---|