Java使用两个参数重载方法

时间:2014-01-24 09:40:52

标签: java overloading

这个问题是关于重载方法,我想我理解基本的想法,但我得到一些奇怪的错误“Overloading.java:14”。 像我的问题是我不知道如何返回我的方法的两个参数。所以我想可能使用toString()将两个int参数转换为方法,然后返回它。有些事情发生了错误。 输出必须遵循:

10

a和b 10,20

char a

结果97

我的问题是,“a和b 10,20”,并没有完成“char a”只是为了让你们知道。这是作业。 到目前为止,我的代码包含一个主类和一个帮助类:

OverMain Class:

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;
  }

} 

2 个答案:

答案 0 :(得分:6)

目前还不是很清楚你要做什么,但是你没有返回参数,我不认为重载确实是问题所在。要超越情境,您可以随时更改方法以使用不同的名称 - 让它以这种方式工作,然后您可以随时更改名称并解决任何冲突。

在你的情况下,我认为你只需要:

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

换句话说,只需使用字符串连接和编译器将应用的自动intString转换,以便使用字符串连接。

请注意,如果你的代码实际编译过,你会得到一个堆栈溢出,因为你从test(a, b)调用test(int a, int b) - 它会永远调用它自己,直到你的堆栈空间不足。

答案 1 :(得分:3)

问题在于您的方法test(int, int)

public String test(int a, int b) {

  String string = "";
  string = test(a, b).toString(); // Danger
  return string;
}
  • 你有一个永无止境的复发关系
  • 解决方案: return a + ", " + b