Java重载具有两个参数的方法
这个问题是关于重载方法的,我想我理解其基本思想,但我得到了一些奇怪的错误“overloading.java:14”。 我的问题是,我不知道如何返回方法的两个参数。所以我想也许可以用toString()转换带有两个int参数的方法,然后返回它。出了严重的问题。 输出必须如下所示: a 10 a和b 10,20 字符a 结果97 我的问题是,“a和b 10,20”,并没有做“字符a”只是为了让你们知道。这不是作业。 以下是我的代码,其中包含一个主类和一个辅助类: 主控类:Java重载具有两个参数的方法,java,overloading,Java,Overloading,这个问题是关于重载方法的,我想我理解其基本思想,但我得到了一些奇怪的错误“overloading.java:14”。 我的问题是,我不知道如何返回方法的两个参数。所以我想也许可以用toString()转换带有两个int参数的方法,然后返回它。出了严重的问题。 输出必须如下所示: a 10 a和b 10,20 字符a 结果97 我的问题是,“a和b 10,20”,并没有做“字符a”只是为了让你们知道。这不是作业。 以下是我的代码,其中包含一个主类和一个辅助类: 主控类: class OverMai
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;
}
}
重载类:
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;
}
}
现在还不清楚你想做什么,但是你不返回参数,我也不认为重载是真正的问题。为了避免重载,您可以随时更改方法,使其具有不同的名称—以这种方式工作,然后您随时可以稍后更改名称并解决任何冲突 就你而言,我认为你只需要:
public String test(int a, int b) {
return a + ", " + b;
}
换句话说,只需使用字符串连接和编译器将应用的自动int
到string
转换,即可使用字符串连接
请注意,如果您的代码实际已编译,则会出现堆栈溢出,因为您正在从
test(inta,intb)
调用test(a,b)
-它将永远调用自己,直到堆栈空间耗尽。不清楚您试图执行的操作,但您不会返回参数,我不认为超载是真正的问题。为了避免重载,您可以随时更改方法,使其具有不同的名称—以这种方式工作,然后您随时可以稍后更改名称并解决任何冲突
就你而言,我认为你只需要:
public String test(int a, int b) {
return a + ", " + b;
}
换句话说,只需使用字符串连接和编译器将应用的自动int
到string
转换,即可使用字符串连接
请注意,如果您的代码实际已编译,则会出现堆栈溢出,因为您正在从
test(int a,int b)
调用test(a,b)
-它将永远调用自己,直到堆栈空间用完。问题在于您的方法test(int,int)
- 你有一个永无止境的循环关系
- 解决方案:
返回a+,“+b
- 问题在于您的方法
测试(int,int)
- 你有一个永无止境的循环关系
- 解决方案:
返回a+,“+b
测试(inta,intb)
方法中有一个无限递归循环:它一直在调用自己,直到堆栈溢出。你为什么从测试(inta,intb)
调用测试(a,b)
这是无止境的递归?你得到了一个StackOverflow,然后在谷歌上搜索“StackOverflow”,并来到这个网站?:-)StackOverflow意味着您有一个无限递归。请注意,您不能重载返回类型,至少在Java中是这样。@Ingo实际上您可以,通过使其更具体(例如子类中的返回字符串,而不是基类中的对象),您在测试中有一个无限递归循环(int a,int b)
method:它一直在调用自己,直到堆栈溢出。为什么从test(inta,intb)
调用test(a,b)
这是无休止的递归,所以你得到了一个StackOverflow,然后在谷歌上搜索“StackOverflow”,并来到这个网站?:-)StackOverflow表示您有一个无限递归。请注意,您不能在返回类型上重载,至少在Java中不能重载。@Ingo实际上您可以,通过使其更具体(例如子类中的返回字符串,而不是基类中的对象),我确实尝试过,但忘记了将行“public String..”从“public int..”更改为“public String..”。谢谢!实际上我试过了,但忘了将“publicstring..”一行从“publicint..”改为“publicsint..”。谢谢!