函数仅使用不同的输入调用相同的块

时间:2017-03-24 19:28:22

标签: java function int double overloading

import java.io.*;
public class LargestOfTwo{
    public static void main(String args[]) throws Exception{
        BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));

        double num1, num2 , large;

        System.out.println("Enter two numbers, and I will show you which one's largest!\n");
        System.out.println("Enter two numbers: ");
        num1 = Double.parseDouble(scan.readLine());
        num2 = Double.parseDouble(scan.readLine());

        large = largest(num1,num2);
        System.out.print("Largest of the numbers is "+large);
    }


    private static double largest(int x,double y){
        System.out.println("id");
        if (x>y)
            return x;
        else 
            return y;
    }

    private static double largest(double x,int y){
        System.out.println("ii");
        if (x>y)
            return x;
        else 
            return y;
    }
    private static double largest(double x,double y){ 
        System.out.println("dd");
        if (x>y)
            return x;
        else 
            return y;
    }
}

我需要使用函数重载(输入浮点值和int值)找到2个输入数字中最大的数字。

我通过那些印刷文本(id,ii,dd)检查了调用是否转到了特定方法。

private static double largest(int x,double y){
        System.out.println("id");
}


private static double largest(double x,int y){
        System.out.println("ii");
}



private static double largest(double x,double y){ 
        System.out.println("dd");
}

但它只执行dd: -

private static double largest(double x,double y)

是因为错误的变量初始化了吗?我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

num1num2都被声明为double,因此除了你得到的内容之外,没有其他任何结果可以预期。

答案 1 :(得分:2)

在这一行中,num1和num2是double。所以具有双参数的方法是调用。

 num1 = Double.parseDouble(scan.readLine());
 num2 = Double.parseDouble(scan.readLine());

答案 2 :(得分:1)

如果你想调用largest(int x,double y)方法,那么将num1转换为整数,例如largest((int)num1, num2).如果要调用largest(int x,int y),则转换num1 }和num2作为整数