2016-03-29 15 views
5
public static void main(String[] args){ 
    char a=true;//Line 1 
    char b=null; //Line 2 
    char c='\n'; //Line 3 
    char d='Hell'; //Line 4 
} 

Eclipse hiển thị lỗi biên dịch trên Dòng 4 chỉ vì sao? Trình biên dịch hiểu của tôi đọc từ trên xuống dưới. do đó, nó nên nói lỗi thời gian biên dịch trên dòng số 1. nhưng làm thế nào là ưu tiên đi đến số dòng 4. Vui lòng làm rõ. Cảm ơnmã hóa java :: Eclipse hiển thị lỗi thời gian biên dịch trên Dòng 4 chỉ vì sao?

+1

Địa ngục là một chuỗi. Một char (ký tự) chỉ là 1 ký tự của mã, chẳng hạn như '\ n' – user2277872

+0

Tôi hiểu 'Địa ngục' là một chuỗi, do đó, nó đang ném lỗi biên dịch. Câu hỏi của tôi là trong mã snap này có lỗi biên dịch trên dòng 1. Nhưng trong Eclipse biên dịch lỗi thời gian cho thấy cho số dòng 4. vậy tại sao? – Raj

+1

@ user2277872, tôi tin rằng OP có nghĩa là nó phải có nói rằng có một lỗi trong dòng một, vì nó gán ** true ** đến một biến char. –

Trả lời

8
  1. Tôi nghĩ ở đây tại dòng số. 4 có lỗi cú pháp để biên dịch đầu tiên kiểm tra Cú pháp biểu thức để bạn biết rằng đây không phải là một cách đúng để nhân vật như thế ('Hello').

  2. Bạn nói lý do tại sao biên dịch không hiển thị lỗi trên dòng 1 & 2 first.Its vì tuyên bố tại dòng 1 & 2 là không sai theo syntax.There ngữ nghĩa sai ví dụ một cách logic.

vì vậy theo trình biên dịch đầu tiên tôi thích lỗi cú pháp của mã của bạn hơn. Tôi hy vọng bạn sẽ hiểu nó (Cú pháp & Ngữ nghĩa).

+0

Cảm ơn .. Tôi đã nhận được câu trả lời. – Raj

2

Để trả lời câu hỏi này, chúng ta cần phải hiểu cách trình biên dịch java hoạt động trong trường hợp của một phân tích trong phân tích Lexical.

Trình biên dịch lý tưởng chỉ mong đợi một char để chỉ có một ký tự để nó quét để mở ' và kết thúc của nó.

Trong trường hợp trên, nó throws lỗi như analyser cờ một lỗi nêu rằng- nó tìm thấy nhiều hơn một ký tự mà kết quả "Unclosed Character literal" mà tiếc xảy ra cách trước khi trình biên dịch thực sự kiểm tra casting exception hoặc Type incompatibity.

Người nghèo IDE không biết mọi thứ xảy ra phía sau hiện trường mang đến cho nó mức độ ưu tiên cao hơn.

Bạn có thể nhận được tất cả các lỗi theo ý của bạn bằng cách thay đổi ' để ":

char a=true;//Line 1 
    char b=null; //Line 2 
    char c='\n'; //Line 3 
    char d="Hell"; //Line 4 

Như bây giờ trong điều kiện nêu trên Lex là hạnh phúc và di chuyển về phía trước.

Các vấn đề liên quan