2013-10-15 36 views
1

由於某種原因,javac無法編譯Integer.parseInt()。我嘗試了幾個在其中有parseInt的程序,它們不工作,所以我寫了一個簡單的小程序來測試問題是parseInt還是程序中的其他東西。這裏的測試程序中,我寫道:無法將字符串轉換爲int(Java)

public class Test 
{ 
public static void main(String[] args) 
{ 
int a = Integer.parseInt(args[0]); 
System.out.println(a); 

} 
} 

即使上述計劃,我仍然有一個編譯錯誤,他說:「錯誤:無法找到符號=的Integer.parseInt();」用箭頭指向。 Integer和解析之間。我試着用Double.parseDouble()來運行程序,它工作得很好。任何想法,爲什麼我得到這個錯誤?

+2

這不是得到那個錯誤的代碼。 –

+4

如果這不是編譯,那麼有人攻擊你的javac。 – Cruncher

+9

您是否偶然製作了一個名爲'Integer'的類? – vandale

回答

1

相反的Integer.parseInt(),請嘗試:

java.lang.Integer.parseInt(args[0]); 

這將確保你肯定使用正確的Integer java.lang中的類 - 如果不工作,那麼有一些嚴重的問題與您的環境。如果確實如此,那麼您必須在另一個類名爲Integer的地方隱式引用,而不是java.lang.Integer類。

+1

謝謝,我讓我的程序使用你的建議工作。 – user2884143

2

Java爲您導入了java.lang包。因此,該程序包中的所有類都可用於您的程序,而無需使用import聲明。但是,如果您在包裝(默認包裝)中聲明瞭一個名爲Integer的類,那麼您的shadowingIntegerjava.lang

您可以使用類,而不是

java.lang.Integer.parseInt(args[0]); 

的完全合格的名稱,或在您的自定義Integer類來創建你自己的static parseInt(String)方法。這將使程序編譯。確保它做到了你想要的。

+3

'或者在你的自定義Integer類中創建你自己的靜態parseInt(String)方法我強烈建議不要讓一個名爲'Integer'的類開始,永遠不要匹配方法名,這樣我們就可以捕獲更少的編譯時錯誤。 – Cruncher

+0

謝謝,我讓我的程序使用您的建議工作。 – user2884143