使用整数或双输入重载java

时间:2015-02-15 15:36:24

标签: java overloading

我要求代码创建具有不同参数的重载方法,这些参数在给定3个整数或双精度时找到最大值。

我不确定如何告诉主程序在给定整数时调用整数值的方法,或者在给定双精度时调用double值的方法。

说,我得到了(3.0,2.0,2.0),我希望最大值为3.0。我不知道如何调用双打方法。

编辑:必须通过控制台输入数字。从这里我不知道如何让程序选择一种方法。

public class NMax {

    public static int max(int a, int b, int c) {

    int max = 0;

    if (a>=b) {
        if (a>=c) {
        max=a;
        } else {
        max=c;
        }
    } else if (b>=a) {
        if (b>=c) {
        max=b;
        } else {
        max=c;
        }
    }
    return max;
    }

    public static double max(double a, double b, double c) {

    double max = 0;

    if (a>=b) {
        if (a>=c) {
        max=a;
        } else {
        max=c;
        }
    } else if (b>=a) {
        if (b>=c) {
        max=b;
        } else {
        max=c;
        }
    }
    return max;
    }


    public static void main(String[] args) {

    double d = StdIn.readDouble();
    double e = StdIn.readDouble();
    double f = StdIn.readDouble();

    int a = StdIn.readInt();
    int b = StdIn.readInt();
    int c = StdIn.readInt();

    System.out.print(max(d, e, f));

    }
}

3 个答案:

答案 0 :(得分:1)

我假设,系统的所有三个输入都是整数或双精度。对于其他可能的组合,您可以对代码进行必要的更改。

containers

答案 1 :(得分:0)

当调用max(1.0,2.0,3.0)时,编译器将自动搜索方法

  • max(double a,double b,double c)

当调用max(1,2,3)时,编译器将自动调用以下方法

  • max(int a,int b,int c)

答案 2 :(得分:0)

对于你的情况,我会编写一个接受Comparable参数的方法,并将其重用于double,int(在幕后转换为Integer,由java转换为Double)或者需要比较的任何其他方法来查找最大值。
或者(甚至更好)使用来自apache commons-lang3的ObjectUtils.max() 没有理由为多个参数类型重复相同的代码(DRY原则)。