Как отсортировать строки по длине - PullRequest
0 голосов
/ 23 мая 2019

Я столкнулся с проблемой сортировки строк из массива. Мне удалось отсортировать целые числа, но я не знаю, как сортировать строки по кратчайшим и самым длинным.

Я пытался преобразовать строки в целые числа с помощью Strings.length, но я не знаю, как преобразовать их обратно в исходную строку.

Обработчик строк;

        System.out.println("\nNow we will sort String arrays.");
        System.out.println("\nHow many words would you like to be sorted.");
        Input = in.nextInt();
        int Inputa = Input;
        String[] Strings = new String [Input];
        for (int a = 1; a <= Input; Input --) //will run however many times the user inputed it will
    {
        counter ++; //counter counts up
        System.out.println("Number " + counter + ": "); //display 
        userinputString = in.next();
        Strings[countera] = userinputString;  //adds input to array
        countera ++;
    }
        System.out.println("\nThe words you inputed are :");
        System.out.println(Arrays.toString(Strings));

        System.out.println("\nFrom shortest to longest the words are:");
        counter = 0;
        int[] String = new int [Strings.length];
    for (int i = 0; i < Strings.length; i++) //will run however many times the user inputed it will
    { 
       int a = Strings[i].length();
       String[i] = a;
    }

    System.out.println(Arrays.toString(String));

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

Ответы [ 2 ]

5 голосов
/ 23 мая 2019

Если вам разрешено использовать библиотечные функции, то вы можете сделать следующее:

Arrays.sort(Strings, Comparator.comparing(String::length));

это работает в Java 8 и выше.Просто убедитесь, что вы импортировали import java.util.*; в какой-то момент вашего файла.

0 голосов
/ 23 мая 2019

Невозможно преобразовать их, так как вы храните только длину - может быть много разных строк одинаковой длины.Вместо этого вы можете попытаться реализовать свой собственный компаратор и передать его в методы сортировки Java: данные две строки возвращают 1, если первая длиннее, 0, если равна, -1, если короче.Вы также можете сделать это в лямбда-компараторе, переданном в Arrays.sort ().

(s1, s2) -> {
      if (s1.length() < s2.length()) {
           return -1;
      }
      return s1.length() > s2.length();
}

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