Найти самый большой в массиве AnyType - PullRequest
0 голосов
/ 15 октября 2011

Здравствуйте, я пишу эту программу и пытаюсь понять, как сравнить два элемента в массиве, чтобы найти самый большой элемент.

public static <T extends Comparable< ? super T>> T getLargest(T [] a, int low, int high){
    if(low>high)
            throw new IllegalArgumentException();
    T[] arrCopy = (T[]) new Object[high-low]
    for(int i=low;i<high;i++){
        if(a[i]>a[i+1])
            arrCopy[i]=a[i];
        else
            arrCopy[i]=a[i+1];
    }
    return arrCopy[0];
}

Но тогда я не знаю, как это проверить, я попробовал:

T[] a = {1,12,7,45,22,23,5};
    System.out.println("Array: [1,12,7,45,22,23,5] low=0 high, Largest?: " + rec.getLargest(a, 0, 6));

но я получаю сообщение об ошибке

Метод getLargest (T [], int, int) в типе Rec не применим для аргументов (int [], int, int)

Как я могу назвать это, чтобы сделать его массивом чисел? Будет ли массив строк работать с кодом, который у меня есть для получения наибольшего?

Возможно, это просто простые ответы, но я некоторое время работал над всей программой, и сейчас все выглядит не так ясно.

EDIT

После изменения массива с int [] на Integer []. Я получаю сообщение об ошибке if(a[i]>a[i+1]) , говорящее

Оператор> не определен для типа (ов) аргумента T, T

Я предполагаю, что мне придется изменить знак >, чтобы сравнить элементы в массиве, но как мне это сделать? Используйте CompareTo ()?

1 Ответ

2 голосов
/ 15 октября 2011

Это не работает, потому что int не является подклассом Comparable, потому что это даже не Object.В принципе, вы не можете использовать примитивы (int, short, long, char, boolean, byte) с генериками.

Попробуйте вызвать его с массивом Integer.

Integer[] a = {1,12,7,45,22,23,5};
System.out.println("Array: [1,12,7,45,22,23,5] low=0 high, Largest?: " + rec.getLargest(a, 0, 6))

Если вы хотите, чтобы ваш метод мог принимать int[], вам потребуется отдельная функция для каждой, которую вы хотите принять (int getLargest(int[], int, int), char getLargest(char[], int, int)и т.< определено только для примитивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...