Находить максимум int и double? - PullRequest
0 голосов
/ 04 марта 2019

Как получить максимальное значение как для заданных значений типа 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;
  }
}

Ответы [ 5 ]

0 голосов
/ 04 марта 2019

Во-первых, если вы просто используете параметры типа double, Java автоматически выполнит примитивное преобразование из int в double.

Во-вторых, вы действительно можетеиспользуйте Math.max для сравнения двух значений, возвращая самое высокое значение.

Однако, если у вас будет много двойников для сравнения, будет неудобно писать Math.max для каждого сравнения.В этом случае я предлагаю использовать поток:

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

Примечание: это вызовет исключение, если массив пуст.

0 голосов
/ 04 марта 2019

Лучшей практикой здесь является использование method overloading (при условии, что вы не хотите использовать собственный метод max / min в Java).Любой метод имеет свою собственную подпись, и они однозначно идентифицируются с подписями.Итак, я бы порекомендовал определить метод следующим образом:

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

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

Но помните, всегда лучше использовать методы min, max в Java.

0 голосов
/ 04 марта 2019

Вы можете использовать Math.max (double a, double b) и Math.max (int a, int b)

Пример:

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);
}
0 голосов
/ 04 марта 2019

Как уже говорилось ранее, вы можете использовать метод Math.max внутри вашего кода, чтобы получить максимальное число.то же самое с Math.min (x, y).Они оба работают одинаково.

поэтому давайте сформулируем это простыми словами.

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

также

public static int max (int x, int y) 
{
    return Math.max(x,y);
}

Это довольно просто.Я верю, что кто-то, возможно, уже ответил на это, но это та же самая концепция.

0 голосов
/ 04 марта 2019

Java преобразует int в double при необходимости.Кроме того, просто используйте Java Math.max().

...