Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java重载具有两个参数的方法_Java_Overloading - Fatal编程技术网

Java重载具有两个参数的方法

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

这个问题是关于重载方法的,我想我理解其基本思想,但我得到了一些奇怪的错误“overloading.java:14”。 我的问题是,我不知道如何返回方法的两个参数。所以我想也许可以用toString()转换带有两个int参数的方法,然后返回它。出了严重的问题。 输出必须如下所示:

a 10

a和b 10,20

字符a

结果97

我的问题是,“a和b 10,20”,并没有做“字符a”只是为了让你们知道。这不是作业。 以下是我的代码,其中包含一个主类和一个辅助类:

主控类:

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..”。谢谢!