2014-12-04 30 views
7
if (year % 4 == 0) 
    int i = 0; 
else 
    int j = 0; 

Các lỗi cú pháp mà cây trồng lên trong nhật thực do dòng mã này là:lỗi cú pháp trong Java

  • Cú pháp lỗi trên thẻ "int", xóa này thẻ
  • tôi có thể không được giải quyết cho một biến
  • Cú pháp lỗi trên thẻ "int", xóa thẻ
  • j này không thể giải quyết cho một biến
  • Cú pháp lỗi trên thẻ "=", xóa mã thông báo này

Tôi không biết tại sao điều này lại xảy ra.

Từ những gì tôi đã quan sát, tôi nghĩ đặt một tuyên bố int trong cấu trúc nếu cơ thể khác làm cho nó xảy ra.

Nếu tôi tuyên bố i và j trước đó trong mã và chạy chương trình thì báo lỗi biến mất như:

int i; int j; 
if (year % 4 == 0) 
    i = 0; 
else 
    j = 0; 

Không có lỗi cú pháp trong trường hợp này. Tại sao?

+2

Tôi đã viết câu trả lời; nhưng kể từ khi đóng cửa, tôi không thể. Nhìn vào JLS cho [câu lệnh if] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.9), nếu bạn đi lên, bạn sẽ thấy rằng một 'LocalVariableDeclarationStatement' chỉ có thể ở trong một' Block' –

Trả lời

0

Có thể là do phạm vi. Khai báo i và j bên trong nếu làm cho chúng không thể truy cập được bên ngoài câu lệnh if. Tuyên bố chúng bên ngoài thay đổi phạm vi của chúng.