2011-11-07 2 views
0
public class Test{ 
    public static void main(String[] arg){ 
     System.out.println("Alexander The Great"); 
    } 
} 

이 코드에서 문자열의 첫 번째 인용 부호를 제거하면 오류가 3 개 발생합니다. 1. ')'expected 2. 닫히지 않은 문자열 리터럴 3. 서술문이 아닙니다.Java 컴파일 시간 오류 : 파싱하는 동안 파일의 끝에 도달했습니다.

오케이, 위의 오류를 이해했습니다.

문자열에서 두 번째 따옴표를 제거하면 오류가 3 개 발생합니다. 1. 닫히지 않은 문자열 리터럴 2. ';' 예상 3. 파싱하는 동안 파일 끝에 도달했습니다.

1과 2를 이해했지만 왜 3입니까?

중괄호가없는 경우 일반적으로 발생하지 않습니까? 그러나 명확하게, 나는 올바른 수의 중괄호를 가지고있다. 또한 첫 번째 경우에는 "파싱하는 동안 파일 끝에 도달했습니다"라는 오류 메시지가 표시되지 않는 이유는 무엇입니까?

P. 나는 jGrasp, java 1.6을 사용하고있다.

답변

1

첫 번째 인용구는 "알렉산더"를 참조로 사용하려고하기 때문에 구문 분석기에 조금 더 많은 작업을 제공 할 수 있습니다. 일단 공간에 도달하면 유일한 합법적 인 표현은 나머지 표현식이지만 대신 다른 식별자라고 생각합니다.

복구를 시도하려면 보너스를 ) 삽입 할 수 있습니다. 구현에 달려있다.

마지막 인용 부호를 제거하면 파서를 줄 끝으로 보냅니다. 그 성명서를 닫으려고하는 대신에, 그것은 조금 잃어 버렸고, 떨어져서 돌아오고, 회복 할 수없고, 파일의 끝을 치다.

내 머리 꼭대기에서 자바 문자열이 한 줄로 만되어 있기 때문에 똑같은 일을 할 수 있고 그 경우에는 문자열 및/또는 문을 닫고 비트를 복구하려고합니다. 더 우아하게. 그래도 분명히 뭔가 빠져있을 수도 있습니다. 대신에

0

따옴표를 검색하는 중 EOF가 발생했기 때문에. 잘못된 코드에 대해 생성 될 정확한 오류 메시지가 지정되는지 여부는 확실하지 않습니다.

-1

사용하는 공공 정적 무효 메인 ([] 인수 문자열) 공공 정적 무효 메인 (문자열 [] 인수)

+0

내가 식별자 옆에 배열 각도 브래킷을 넣는 것이 더 나은 스타일 것에 동의합니다. 이것은 질문에 대한 대답이 아니며 답 대신 설명을 사용하는 것을 고려하십시오. –