2014-01-24 55 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
相关问题