【问题标题】:Function only calls the same block with different input函数只调用具有不同输入的相同块
【发布时间】:2017-08-17 20:58:30
【问题描述】:
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;
    }
}

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

我通过这些打印文本(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)

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

【问题讨论】:

  • 因为你初始化了引用 "double num1, num2;"作为 double 类型,您只需发送 2 个双引用位模式的副本,在这种情况下 jvm 认为 dd 是最合适的
  • 有什么解决办法吗?
  • 你为什么关心?假设我输入了 3 ,它非常适合整数和双精度范围,所以你可以选择最适合你的,如果你想处理小数位,我也会选择双精度,它也有更大的范围,如果我理解正确的话他们不要求您检测哪种原始类型

标签: java function int double overloading


【解决方案1】:

num1num2 都被声明为 double,所以除了你得到的结果之外,真的没有其他可以期待的结果。

【讨论】:

  • 那我该如何解决呢?我需要回答这个问题“找到最大的 2 个输入数字,使用函数重载(输入浮点值和 int 值)。”
  • 说明不清楚。他们究竟希望你做什么?似乎不需要重载。
  • 使用函数重载概念(输入浮点值和整数值)在两个输入的数字中找到最大的:- 这是我的大学为作业提出的确切问题。 :V
  • @JoeTinnySpace 然后看看 Nkem Cels 的回答。另请注意,您说您需要比较 float 和 int,因此请考虑将变量定义为 float(因此将 Scanner 输入解析为 float)而不是 double。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    如果您想调用largest(int x,double y) 方法,则将num1 转换为整数,即largest((int)num1, num2). 如果您想调用largest(int x,int y),则将num1num2 都转换为整数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 2012-06-24
      • 2014-10-15
      • 1970-01-01
      • 2021-10-09
      • 2020-05-28
      • 2015-06-09
      相关资源
      最近更新 更多