Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для Jocker
1 / 1 / 3
Регистрация: 22.01.2015
Сообщений: 199

Ошибка в проверке строк на символы с последующим выводом

19.02.2018, 01:02. Показов 735. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, есть задание согласно которому пользователь вводит в одну строку символы, разделённые пробелом, необходимо вывести все слова у которых одинаковые буквы. Программа завершается корректно в случае, когда нету подходящих слов, но в случае, если они есть - выбивает ошибку в строках 11 и 55. Помогите, пожалуйста.
P.S. Код немного запутан, оптимизацией займусь при рабочей программе, добавил везде комментарии, чтобы проще было понять код.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.company;
 
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        System.out.println("Enter words, please!");
        Scanner in = new Scanner(System.in);
        String[] correctWords;                           // Создаём массив "правильных" слов
        correctWords = StringChecking(in.nextLine());    // Вызываем метод, в который передаём введенную пользователем строку
        int lenght = correctWords.length;
        for (int i = 0; i<lenght; i++)
            System.out.println();
    }
 
    private static String[] StringChecking(String string)
    {
        String[] words = string.split(" "); // разбиваем строку на слова по пробелу
        String[] correctStrings = {};
        boolean result = true;
        char[] word;
        char symbol = ' ';
 
        //Во внешнем цикле перебираем все слова на нужное слово и добавляем в массив, если нашли
        for (int i=0; i<words.length ;i++)
        {
            // Переводим каждое слово в массив символов
            word = words[i].toCharArray();
 
            // Во внутреннем - перебираем отдельные символы
            for (int y = 0; y<word.length; y++)
            {
                // Запоминаем первый символ слова
                if(y==0)
                    symbol = word[y];
                    // Для всех последующих символов
                else
                {
                    // Если символ слова совпал со знаком
                    if (word[y] == symbol)
                        continue;
 
                    // Если не совпал, переводим флаг в режим false и заканчиваем перебор символов
                    else
                    {
                        result = false;
                        break;
                    }
                }
            }
            // Если все знаки совпали и флаг остался "положительным", то добавляем слово в массив
            if (result)
            {
                correctStrings[correctStrings.length] = word.toString();
            }
            else continue;
        }
 
        // Возвращаем массив "правильных" слов
        return correctStrings;
    }
}
Добавлено через 5 минут
P.P.S Работаю в IntelliJ, к ней ещё не привык, может там можно как-нибудь дебажить и проверять данные пошагово?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2018, 01:02
Ответы с готовыми решениями:

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

Поиск значения с последующим выводом
Есть код, который работает, но маленький недостаток . В БД хранятся номера в которых может присутствовать лидирующий 0, а может и не...

Читать файл, с последующим выводом на экран
Есть текстовый файл, содержимое которого выглядит следующим образом: Noah 18090 Liam 18002 Jacob 17976 Mason 17591 ...

6
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.02.2018, 07:04
Можно, даже туториалы на Ютубе есть
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
20.02.2018, 10:45
a так?
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
import java.util.Arrays;
import java.util.Scanner;
 
public class CyberWord {
 
    private static boolean isEquilContent(String str1, String str2) {
        char [] contStr1 = str1.toCharArray();
        char [] contStr2 = str2.toCharArray();
        Arrays.sort(contStr1);
        Arrays.sort(contStr2);
        return Arrays.equals(contStr1, contStr2);
    }
 
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.printf("%s%n", "Вводите слова через пробел");
        String [] words = input.nextLine().toLowerCase().split(" ");
        if (words.length < 2)
            System.exit(1);
        for (int i = 0; i < words.length; i++) {
            for (int j = i + 1; j < words.length; j++) {
                if (isEquilContent(words[i],words[j]))
                    System.out.printf("Состав %s и %s однаков%n", words[i], words[j]);
            }
        }
    }
}
0
 Аватар для Jocker
1 / 1 / 3
Регистрация: 22.01.2015
Сообщений: 199
21.02.2018, 01:17  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
a так?
Вы немного не правильно поняли задание, Вы сравниваете 2 слова, а на вход поступает одна большая строка, которая содержит слова. Нужно вернуть массив всех слов, у буквы которых одинаковы. Например:
Вход: "qwer qqq ww ttyr sss"
Выход: "qqq ww sss"
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
21.02.2018, 02:41
Цитата Сообщение от Jocker Посмотреть сообщение
выбивает ошибку в строках 11 и 55
Естественно. Тебе даже пишет какую. Ты не читаешь, что ли?
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
21.02.2018, 14:34
Jocker, жаль, но реализация "не правильного" понимание доставило мне удовольствие)). Спасибо!

Добавлено через 5 часов 38 минут
вот, еще одна зарисовка))
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
import java.util.Scanner;
 
public class CyberWord {
    private static String [] strBox = new String[1];
    private static int indexBox = 0;
 
    private static void addStrInBox(String addingStr) {
        if (indexBox != strBox.length)
            strBox[indexBox++] = addingStr;
        else {
            String [] newBox = new String[strBox.length * 2];
            int tmpIndex = 0;
            for (String tmpSt : strBox)
                newBox[tmpIndex++] = tmpSt;
            newBox[tmpIndex++] = addingStr;
            indexBox = tmpIndex;
            strBox = newBox;
        }
    }
 
    private static boolean isEquilContent(String str1) {
        char firstLetter = str1.charAt(0);
        for (char tmpCh : str1.toLowerCase().toCharArray())
            if (firstLetter != tmpCh)
                return false;
        return true;
    }
 
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.printf("%s%n", "Вводите слова через пробелы");
        String [] words = input.nextLine().toLowerCase().split(" ");
 
        for (String tmpWord : words) {
            if (isEquilContent(tmpWord))
                addStrInBox(tmpWord);
        }
        for (String tmpSt : strBox)
            if (tmpSt != null)
                System.out.printf("%s, ", tmpSt);
    }
}
0
 Аватар для Jocker
1 / 1 / 3
Регистрация: 22.01.2015
Сообщений: 199
21.02.2018, 23:52  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
Естественно. Тебе даже пишет какую. Ты не читаешь, что ли?
Я прочитал, просто не сразу понял что именно привело к ошибке, сейчас уже исправил её)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2018, 23:52
Помогаю со студенческими работами здесь

Не работает запись в структуру с последующим выводом
Вообщем, проблема такая. С помощью первого кода идет запись в файл, второго - вывод с файла средней оценки студентов группы, которая нам...

Сортировка массивов с последующим выводом в richTextBox
имеется 2 массива типа string и int. string imena; int nomera; for (int i = 0; i &lt; 5; i++) { //здесь элементы массивов...

Загрузить данные из БД в DataTable с последующим выводом в DGV
помогите пожалуйста ;) мне нужна чтобы из база данных перенести информацию в datatable а потом отображать эту информацию в dataGridview...

Цикл: Сгенерировать числа от 0 до 99999999, с последующим их выводом...
Помогите пожалуйста написать программу для Паскаль АВС задача: сгенерировать числа от 0 до 99999999, с последующим их выводом. ...

Считывание из бинарного файла в структуру с последующим выводом
В бинарном файле храниться инфа: Имя_пользователя дата_подключения номер Имя_пользователя дата_подключения номер и т.д. Есть...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru