Java, сортировка строк по алфавиту без массивов - PullRequest
1 голос
/ 11 октября 2011

Итак, у меня есть еще одно задание, и задача состоит в том, чтобы отсортировать 3 строки в алфавитном порядке, используя метод CompareTo. В основном программа получает 3 строки (a, b и c) из класса тестера, и она должна вернуть обратно «getMin», «getMiddle» и «getMax».

Я разобрался с getmin и max, казалось легко, но у меня проблемы с getMiddle. это то, что у меня есть для мин и макс:

        String min = "";
    if (a.compareTo(b) <= 0 && a.compareTo(c) <= 0) min = a;
    else if (b.compareTo(a) <= 0 && b.compareTo(c) <= 0) min = b;
    else if (c.compareTo(b) <= 0 && c.compareTo(a) <= 0) min = c;
    return min;

и аналогично для получения макс только немного отличается. Как я могу пойти о создании getMiddle. Также нам не разрешается использовать массивы, так как мы их «еще не изучили». и проф сказал, что код для получения среднего должен быть около 5-6 строк.

Спасибо

Ответы [ 6 ]

6 голосов
/ 11 октября 2011

Умножить возвращаемые значения метода CompareTo.Если значение среднее, результаты метода CompareTo имеют разные знаки.результат умножения равен нулю или имеет отрицательный знак.

String getMiddle(String a,String b,String c)
{
    String middle = "";
    if (a.compareTo(b)*a.compareTo(c) <= 0) middle = a;
    else if (b.compareTo(a)*b.compareTo(c) <= 0) middle = b;
    else if (c.compareTo(b)*c.compareTo(a) <= 0) middle = c;
    return middle;
}
1 голос
/ 11 октября 2011

Почему так сложно? Просто используйте TreeSet , он использует compareTo () внутри:).

1 голос
/ 11 октября 2011

Делая это по-своему, это будет выглядеть так:

if      (a.compareTo(b) > 0 && a.compareTo(c) <= 0) middle = a;
else if (a.compareTo(c) > 0 && a.compareTo(b) <= 0) middle = a;
else if (b.compareTo(a) > 0 && b.compareTo(c) <= 0) middle = b;
else if (b.compareTo(c) > 0 && b.compareTo(a) <= 0) middle = b;
else middle = c;
return middle

Ну, это основная суть. Вы могли бы объединить некоторые из них вместе для меньшего количества строк, но я оставлю это на ваше усмотрение.

1 голос
/ 11 октября 2011
 String middle = "";
    if (a.compareTo(b) <= 0 && a.compareTo(c) >= 0) middle = a;
    else if (b.compareTo(a) <= 0 && b.compareTo(c) >= 0) middle = b;
    else if (c.compareTo(b) <= 0 && c.compareTo(a) >= 0) middle = c;
    return middle;
0 голосов
/ 12 октября 2011

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

0 голосов
/ 11 октября 2011

это дает середину .. не проверял это тщательно ... а также, что касается предсказания количества линий, я не уверен, что встретил это очень хорошо ... в любом случае ...

    String mid = "";
    if (a.compareTo(b) <= 0) {
        if (b.compareTo(c) <= 0) mid = b;
        else mid = c;}
    else if(a.compareTo(c) <= 0) mid = a;
    else mid = c; 
    return mid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...