Java 求int和double的最大值?

Java 求int和double的最大值?,java,max,Java,Max,如何获得给定int和double值的最大值 package _pasted_code_; import java.util.Scanner; public class extra { public static void main(String[] args) { double x = 2.0; double y = 3.0; double z = 5.67; int a = 3; int b = 9;

如何获得给定int和double值的最大值

package _pasted_code_;
import java.util.Scanner;

public class extra {

    public static void main(String[] args) {
        double x = 2.0;
        double y = 3.0;
        double z = 5.67;
        int a = 3;
        int b = 9;
        double answer = max(x, y);
        System.out.println("The largest number is: " + answer);
        double answer = max(x, y, z);
        int max = max(a, b);
    }   

  public static double max(double num1, double num2) { 
    if (num1 > num2)
      return num1;
    else
      return num2;
  }

  public static int max (int x, int y) {

      if (x > y)
          return x;
        else
          return y;
  }

  public static double max(double num1, double num2, double num3) {
    if ((num1 > num2) && (num1 > num3))
      return num1;
    else
      return num2;
    else  
      return num3;
  }
}

Java将在需要时将
int
转换为
double
。另外,只需使用Java的
Math.max()

就可以了 及

例如:

public static int max(int x, int y) {
    return Math.max(x, y);
}
public static double max(double num1, double num2) { 
    return Math.max(num1, num2);
}
public static double max(double num1, double num2, double num3) {
    return Math.max(Math.max(num1, num2), num3);
}

如前所述,您可以在代码中使用Math.max方法来接收最大值。和Math.min(x,y)一样。他们两人的工作方式相同

因此,让我们简单地说一下

public static double max(double num1, double num2) 
{ 
    return Math.Max(num1, num2);
}


这很简单。我相信有人已经回答了,但这是同一个概念

这里的最佳实践是使用
方法重载(假设您不想使用Java自己的max/min方法)。任何方法都有自己的签名,并且它们用签名唯一地标识。所以,我建议如下定义方法:

public static int max(int x, int y) {
    // your implementation
}

public static double max(double x, double y) {
    // your implementation
}

但是请记住,最好使用Java的min、max方法。

首先,如果您只使用类型为
double
的参数,Java将自动执行从
int
double
的原语转换

第二,您确实可以使用Math.max的
of来比较这两者,返回最高值

但是,如果要比较多个double,那么为每个比较编写
Math.max
将变得很麻烦。在这种情况下,我建议使用流:

double[] numbers = ...;
double max = Arrays.stream(numbers)
    .max()
    .get(); 

注意:如果数组为空,这将引发异常。

X&Y是双精度的,而不是整数,为什么不按原样调用它们呢?为什么我们把双数值称为数值?(即num1、num2、num3而非x、y、z)
double[] numbers = ...;
double max = Arrays.stream(numbers)
    .max()
    .get();