2014-01-24 54 views
1

這個問題是關於重載方法的,我想我明白了基本的想法,但是我得到了一些奇怪的錯誤「Overloading.java:14」。 像我的問題是,我不知道如何返回我的方法的兩個參數。所以我想也許用toString()將兩個int參數轉換爲方法,然後返回它。有些事情發生了錯誤。 輸出必須被以下:Java重載一個帶有兩個參數的方法

a和b 10,20

炭一個

結果97

,因爲它是我的問題,是用「 a和b 10,20「,並沒有完成」char a「只是爲了讓你知道。這是不是作業。 這裏是我到目前爲止的代碼包含一個主類和輔助類:

OverMain類:

class OverMain { 
    public static void main(String args[]) { 
     Overload overload = new Overload(); 
     int result; 
     System.out.println("a " + overload.test(10)); //prints a 10 
      System.out.println("a and b " + overload.test(10, 20)); //the method I have trouble with 
     result = overload.test('a'); //prints Result 97 
     System.out.println("Result " + result); 
    } 
} 

過載等級:

//The class which is suppose to overload test methods 
class Overload { 

    public int test(int a) { 
    return a; 
    } 

    public String test(int a, int b) { 
    String string = ""; 
     string = test(a, b).toString(); 
     return string; 
    } 

} 
+0

喬恩斯基特救援。 –

+2

你的'test(int a,int b)'方法中有一個無界的遞歸循環:它自己調用直到堆棧溢出。 – Jesper

+2

爲什麼你從'test(int a,int b)調用'test(a,b)' 那是無窮遞歸 –

回答

6

這不是真的清楚你'試着去做,但你不要返回參數,我不認爲超載真的是問題h ERE。爲了克服這種情況,你總是可以改變方法以得到不同的名字 - 讓它以這種方式工作,然後你可以隨時改變名字並找出衝突。

在你的情況,我認爲你只需要:

public String test(int a, int b) { 
    return a + ", " + b; 
} 

換句話說,只要使用字符串連接和自動intString轉換,編譯器會爲了使用字符串連接應用。

請注意,如果您的代碼實際編譯了,您會因爲從test(int a, int b)調用test(a, b)而導致堆棧溢出 - 它只會自動調用它自己,直到您用完堆棧空間。

+0

我實際上已經嘗試過,但忘了將「public String ..」這一行改爲「public int ...」。謝謝! – deathshot

3

的問題是在你的方法test(int, int)

public String test(int a, int b) { 

    String string = ""; 
    string = test(a, b).toString(); // Danger 
    return string; 
} 
  • 你有一個永不落幕的遞推關係
  • 解決方案:return a + ", " + b
相關問題