Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/26: Рейтинг темы: голосов - 26, средняя оценка - 4.50
0 / 0 / 2
Регистрация: 01.05.2014
Сообщений: 10

Сортировка элементов строкового массива

01.05.2014, 19:52. Показов 5285. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Передо мной встал такой вопрос, как сортировка элементов строкового массива.
Написав программу и углубившись в теорию, понял, что такая сортировка, как у меня, работать и не должна. Как я понял, это из-за того, что я присваивал лишь адреса на элементы массива. Никакой матчасти по этому вопросу найти не удалось.
Хотел бы спросить, каким образом это можно реализовать? Заранее спасибо.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.util.*;
 
public class Sort_strings {
 
    public static void main(String[] args) {
        new Sort_strings();
    }
 
    Sort_strings() {
        Scanner sc = new Scanner(System.in);
        System.out.println("Введите предложение");
        String p = sc.nextLine();
        p = " " + p + " ";
        String temp = "";
 
        String word[] = new String[p.length()]; 
        int kw = -1, n = 0;
        final String r = " ;:(),?!";
        
        for(int i=0; i<p.length()-1;i++){
            int a = r.indexOf(p.charAt(i));
            int b = r.indexOf(p.charAt(i+1));
            if((a > -1) && (b == -1)) n = i + 1;
            if((a == -1) && (b > -1)){
                kw++;
                String w = p.substring(n,i+1);
                word[kw] = w;
            } 
        }
        System.out.println("Массив: ");
        for(int i = 0;i <= kw; i++)
            System.out.print(word[i]+" ");
 
        for (int i = 1; i < kw; i++) {
            for (int j = kw-1; j >= i; j--)
                if ((word[i].compareTo(word[j])) == -1) {
                    String temp1 = word[i];
                    word[i] = word[j];
                    word[j] = temp1;
                }           
        }
        System.out.println("Массив в алфавитном порядке");
        for(int i = 0;i <= kw; i++)
            System.out.print(word[i]+" ");}
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2014, 19:52
Ответы с готовыми решениями:

Сортировка строкового массива
Есть массив: List colorModel = new ArrayList(); В него прилетает из БД такой массив: {&quot;Фиолетовый&quot;,...

Сортировка элементов массива
Здравствуйте. Есть массив List, содержащий элементы типа {&quot;459asd&quot;,&quot;4232ff&quot;,&quot;1kvr&quot;} Как можно реализовать сортировку его элементов по...

Сортировка строкового массива
Есть string массив состоящий из &quot;ch1&quot;,&quot;ch2&quot;,&quot;ch10&quot;,&quot;ch22&quot;,&quot;ch3&quot;. При попытке сортировки выводит это:&quot;ch1,ch10,ch2,ch22,ch3&quot;, а...

3
51 / 51 / 42
Регистрация: 06.09.2013
Сообщений: 188
02.05.2014, 01:22
Лучший ответ Сообщение было отмечено Fouk666 как решение

Решение

Fouk666,

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
 
public class Test {
 
    public static void main(String[] args) throws IOException {
        
        BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
        
        String string;
        System.out.print("Введите строку: ");
        string = buffer.readLine();
        
        string = Test.cleanedLine(string);
        Test.sortMas(string);
    }
    
    public static String cleanedLine(String line) {
        
        line = line.replaceAll("\\p{Punct}", "");               //убираем все знаки пунктуации (работает как для русского так и для англ языка)
        line = line.replaceAll("[0-9]", "");                    //убираем числа в строке, если таковые есть
        return line;
    }
    
    public static void sortMas(String line) {
        ArrayList<Character> alphabet = new ArrayList<Character>();                 //используем список для хранения символов строки
        
        for(int i = 0; i < line.length(); ++i)
            alphabet.add(line.charAt(i));                                           //заполняем список символами из строки
        
        Collections.sort(alphabet);                                                 //сортируем в алфавитном порядке
        
        System.out.print("Отсортированный массив: ");
        for(char symbol : alphabet)                                                 //перебираем в цикле
            System.out.print(symbol);                                               //выводим
    }
}
1
0 / 0 / 2
Регистрация: 01.05.2014
Сообщений: 10
02.05.2014, 14:46  [ТС]
Еще остался вопрос, как отсортировать не каждую букву, а слова, разделенные символами, по алфавиту.
Вот часть кода, в которой я массив заполнял именно словами из строки. Позже имел массив, где в одной позиции - одно слово.
Java
1
2
3
4
5
6
7
8
9
10
for(int i=0; i<p.length()-1;i++){
        int a = r.indexOf(p.charAt(i));
        int b = r.indexOf(p.charAt(i+1));
        if((a > -1) && (b == -1)) n = i + 1;
        if((a == -1) && (b > -1)){
                kw++;
                String w = p.substring(n,i+1);
                word[kw] = w;
        } 
}
0
51 / 51 / 42
Регистрация: 06.09.2013
Сообщений: 188
02.05.2014, 22:49
Лучший ответ Сообщение было отмечено Fouk666 как решение

Решение

Fouk666,

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
 
public class Test {
 
    public static void main(String[] args) throws IOException {
        
        BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
        
        String string;
        System.out.print("Введите строку: ");
        string = buffer.readLine();
        
        string = Test.cleanedLine(string);
        Test.sortMas(string);
    }
    
    public static String cleanedLine(String line) {
        
        line = line.replaceAll("\\p{Punct}", "");               //убираем все знаки пунктуации (работает как для русского так и для англ языка)
        line = line.replaceAll("[0-9]", "");                    //убираем числа в строке, если таковые есть
        return line;
    }
    
    public static void sortMas(String line) {
        ArrayList<String> alphabet = new ArrayList<String>();                   //используем список для хранения символов строки
        
        String[] mas = line.split(" ");
        for(int i = 0; i < mas.length; ++i)
            alphabet.add(mas[i]);                                           //заполняем список символами из строки
        
        Collections.sort(alphabet);                                                 //сортируем в алфавитном порядке
        
        System.out.print("Отсортированный массив:\n");
        for(String str : alphabet)                                                  //перебираем в цикле
            System.out.println(str);                                                //выводим
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2014, 22:49
Помогаю со студенческими работами здесь

сортировка строкового массива
Существует ли функция сортировки строкового массива по количеству знаков в элементах?

Сортировка строкового массива
Всем привет. Подскажите пожалуйста почему у меня не выводит отсортированный список:( unit Unit1; interface uses ...

Сортировка массива заполненного числами, но строкового типа
Собственно сабж. Перевести в integer, longint и даже int64 не могу, так как в числе 64 разряда. 64 числа, которые надо расставить в порядке...

Копирование элементов из одного строкового массива в другой
Добрый день! Имеется строковый массив с путями к файлам: public string = File { ...

Возведение в степень всех элементов строкового массива и извлечение корня
Как записать строковый массив и возвести его в квадрат. И как извлечь из любого массива квадратный корень. p.s я нуб, проги легкие,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru