2016-05-22 43 views
-6

我試圖調用我的方法m1(int),但在嘗試使用字符串作爲輸入時出現錯誤。foo(int)不適用於參數(字符串)

背後的原因是什麼?

class TestSuper 
{ 

    public void m1(int i) 
    { 
     System.out.println("int-arg"); 
    } 
    public void m1(float f) 
    { 
     System.out.println("float-arg"); 
    } 

    public static void main(String[] args){ 
     TestSuper t = new TestSuper(); 
     t.m1(10.5f); 
     t.m1(10); 
     t.m1("Name"); // <- Where I get the error. 
    } 

} 
+0

因爲'String'不是'float'或**'int'。 –

+0

但它需要字符... – fool

+1

'字符串'不是'字符';但是'char'是一個整數類型(可以*擴大爲int)。 –

回答

1

對於初學者來說,你想一個對象,String之間投和原始,int。這根本行不通。對象不能轉換爲原語,反之亦然。

A String,包含一個char的數組包含在一個Object中。
一個int,包含一個帶符號的十進制數字。

當您嘗試運行的需要與Stringint的方法,你是不是有一些提供它,你是一個char,然後必須被強制轉換爲int提供它。

此外,您設置超載的方式,沒有辦法區分天氣或不使用m1(int)方法或m1(float)方法。爲了解決這個問題,您應該添加以下方法:

public void m1(String s) { 
    System.out.println("String-arg"); 
} 

對於未來,一個Stringint之間施放,使用:

int i = Integer.parseInt("44"); // Equal to 44. 

然後運行回饋一個NumberFormatException的風險,所以爲了安全起見:

public void randomMethod(String input) { 
    int i = 0; 
    try { 
     i = Integer.parseInt(input); 
    } catch (NumberFormatException e) {} // Fill in with your requirements. 
} 
相關問題