Сортируйте массив и получите 3 самых больших элемента - PullRequest
0 голосов
/ 05 ноября 2011

Я начинающий программист Java.У меня есть домашнее задание: написать статический метод, в параметре метода массив массива напитков.Метод возвращается с 3 самым большим элементом массива алкогольных напитков.

Мой вопрос: есть ли более короткое решение, как я написал?

Ответы [ 4 ]

3 голосов
/ 05 ноября 2011

Если ваш метод getAlcohol() возвращает удвоение, вы не должны приводить его к int, это приведет к потере точности. Кроме того, вы можете автоматически сравнивать двойные числа вместо того, чтобы делать это самостоятельно, например:

Arrays.sort(t, new Comparator<AlcoholDrink>() { 
        // here I try sorting the elements by their alcohol value
        @Override
        public int compare(AlcoholDrink o1, AlcoholDrink o2) {
           return o1.getAlcohol().compareTo(o2.getAlcohol());
        }
    });

Вы также можете заставить свой класс Alcohol реализовать интерфейс Comparable, как показано в примере в этом .

Наконец, если вы хотите придерживаться своего собственного кода, вы можете рассмотреть возможность изменения значения, возвращаемого методом сравнения, следующим образом:

 @Override
        public int compare(AlcoholDrink o1, AlcoholDrink o2) {
            int at1 = (int)o1.getAlcohol(); // get the alcohol value
            int at2 = (int)o2.getAlcohol(); // get the alcohol value
            if(at1>at2)
                return -1;
            else if(at1<at2 )
                return 1;
            return 0;
        }

Сейчас я не могу проверить код, но вы можете сортировать массив по возрастанию.

0 голосов
/ 30 апреля 2013
First sort the array descending order and get the first three element.

package sortingelementinarray;
public class SortElement 
{
    public static void main(String args[])
    {
        int array[] = {1,6,4,7,2,3};
        int temp;
        for(int j = 0 ; j < array.length; j++)
        {
        for(int i = 0; i < array.length-1; i++)
        {
            if(array[j] > array[i])
            {
                temp = array[j];
                array[j] = array[i];
                array[i] = temp;

            }
        }
        }
        for(int abc : array)
        {
            System.out.println(abc);
        }

    }
}
0 голосов
/ 05 ноября 2011

в вашем компараторе, верните -1, если оно меньше, 1, если оно больше, и это должно работать

0 голосов
/ 05 ноября 2011

Я считаю, что ваш массив сортируется в порядке возрастания.

В этом случае вы хотите получить последние 3 элемента после сортировки или изменить компаратор.

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