Как использовать Math.min и Math.max в целочисленном массиве

Я хочу найти максимальное и минимальное значения в целочисленном массиве, но я не могу их использовать.

Eclipse выдает эту ошибку

The method min(int, int) in the type Math is not applicable for the arguments (int[])

Я не могу использовать эти встроенные функции в массиве.

public static void main (String args[])
{
    c_21 obj=new c_21();
    int[] a =new int[3];
    a[0]=1;
    a[1]=5;
    a[2]=6;
    int max = Math.max(...a);
    int min = Math.min(...a);
}

Я предполагаю, что ваш учитель ожидает, что вы напишете алгоритм, используя цикл, чтобы сделать это. Не только для того, чтобы найти способ, который сделает это за вас. Найденные вами методы, как ясно сказано в сообщении и как также говорится в документации javadoc, просто сравните два целых числа. Если ваша цель - найти методы в библиотеке Java, вам необходимо прочитать их javadoc.

JB Nizet 29.07.2018 10:05

Теперь вы можете подумать о принимая ответ или прокомментировать один, чтобы получить подробности;) чтобы вознаградить тех, кто потратил время на вас;)

azro 30.05.2020 20:29
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
2
7 085
4

Ответы 4

Эти функции ожидают только два аргумента. Если вам нужен минимум массива, вы можете использовать IntStream.

int[] a = { 1, 5, 6 };
int max = IntStream.of(a).max().orElse(Integer.MIN_VALUE);
int min = IntStream.of(a).min().orElse(Integer.MAX_VALUE);

Если возможно, используйте NumberUtils в Apache Commons Lang - там много замечательных утилит.

NumberUtils.max(int[]);

В твоем случае:

int max = NumberUtils.max(a);

Или вы можете использовать:

int max = Collections.max(Arrays.asList(1,5,6));
  1. Math.max()/min()

    Если вы действительно хотите использовать эти 2 функции, вы можете сделать следующее:

    int max = Arrays.stream(a).reduce(Math::max).orElse(Integer.MAX_VALUE);
    int min = Arrays.stream(a).reduce(Math::min).orElse(Integer.MIN_VALUE);
    

  1. Встроенная функция IntStream

    int max = IntStream.of(a).max().orElse(Integer.MIN_VALUE);
    int min = IntStream.of(a).min().orElse(Integer.MAX_VALUE);
    

  1. Использование простого for loop

    int max = Integer.MIN_VALUE;
    int min = Integer.MAX_VALUE;
    for (int element : a) {
        max = Math.max(max, element);
        min = Math.min(min, element);
    }
    

Вы можете просто использовать встроенную Java-версию Collection и Arrays, чтобы решить эту проблему. Вам просто нужно импортировать их и использовать.

Пожалуйста, проверьте код ниже.

import java.util.Arrays;
import java.util.Collections;

public class getMinNMax {
    public static void main(String[] args) {

        Integer[] num = { 2, 11, 55, 99 };

        int min = Collections.min(Arrays.asList(num));
        int max = Collections.max(Arrays.asList(num));

        System.out.println("Minimum number of array is : " + min);
        System.out.println("Maximum number of array is : " + max);
    }
}

Другие вопросы по теме