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

在此代碼中,如果刪除字符串中的第一個引號,則會出現3個錯誤。 1 ')' 預計 2.未閉合的字符串字面 3.不是Java編譯時間錯誤:解析時到達文件結尾

OK聲明,我明白了上面的錯誤。

如果我刪除字符串中的第二個引號,我也會得到3個錯誤。 1.未結束的字符串文字 2.';'預計 3.解析時達到文件結尾

我明白了1和2,但爲什麼3?

大括號缺失時通常不會發生嗎?但顯然,我有正確數量的大括號。 另外,爲什麼不第一個案例給出錯誤「解析時到達文件的結尾」?

P.S.我使用jGrasp,java 1.6。

回答

1

離開第一個引用可能給解析器多一點工作,因爲它會嘗試將「Alexander」作爲參考。一旦它達到空間,唯一合法的東西就是表達的其餘部分,但它認爲它是另一個標識符。

它可能會插入獎金)試圖恢復;取決於實施。

離開最後一個報價將發送解析器到行的末尾。它不會試圖關閉該語句,而是會失去一點點並脫離,並且無法恢復並達到文件的結尾。

對我來說,看起來,由於Java字符串是單行的,它可以做很多相同的事情,並嘗試關閉字符串和/或語句在這種情況下,並恢復一點更優雅。不過,我可能會錯過一些明顯的東西。

0

由於搜索引號時遇到EOF。我不確定是否指定了針對錯誤代碼發出的確切錯誤消息。

-1

使用公共靜態無效主要(字符串ARG []) 代替公共靜態無效主要(字符串[] ARG)

+0

我同意把陣列角括號旁邊的標識符是更好的風格。這不是問題的答案,請考慮使用評論而不是答案。 –