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

В массиве слов найти слово состоящее только из цифр. Если таких слов несколько, найти второе из них?

27.10.2021, 13:20. Показов 1542. Ответов 9
Метки java (Все метки)

Студворк — интернет-сервис помощи студентам
Это учебная задачка. Java Collection Framework (за исключением java.util.Arrays) и регулярные выражения использовать нельзя. Сделал свою реализацию, но код у меня не работает, в чем может быть проблема? Может быть я не правильно конвертировал строки?
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
public class Application {
    public static void main(String[] args) {
        String[] words = new String[]{"qqqqqqqqqqwe", "qwer", "123", "4321"};
        StringProcessor stringProcessor = new StringProcessor();
        stringProcessor.displayNumberContainingOnlyDifferentDigits(words);
    }
}
 
public class StringProcessor {
    public void displayNumberContainingOnlyDifferentDigits(String[] array) {
        for (String element : array) {
            boolean isDistinct = true;
            char[] chars = String.valueOf(element).toCharArray();
            for (int i = 0; i < chars.length - 1; i++) {
                for (int j = i + 1; j < chars.length; j++) {
                    if (chars[i] == chars[j] && chars[i] >= '0' && chars[i]<='9') {
                        isDistinct = false;
                        break;
                    }
                }
                if (!isDistinct) {
                    break;
                } else if (i == chars.length - 2) {
                    System.out.println("Число, состоящее только из различных цифр: " + element);
                    return;
                }
            }
        }
        System.out.println("Таких чисел нет!");
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2021, 13:20
Ответы с готовыми решениями:

Найти слово, состоящее только из цифр. Если таких слов больше одного, найти второе из них
Ввести n слов с консоли. Найти слово, состоящее только из цифр. Если таких слов больше одного, найти второе из них. Сделал примерно...

Найти число, состоящее только из различных цифр. Если таких чисел несколько, найти первое из них
Ввести n чисел с консоли. Найти число, состоящее только из различных цифр. Если таких чисел несколько, найти первое из них.

Найти слово максимальной длины, если таких слов несколько, то вывести последнее
Здравствуйте! Помогите, пожалуйста Дан текст, записанный латинскими буквами. Длина текста не менее 300 символов и заканчивается...

9
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
27.10.2021, 13:51
Цитата Сообщение от AmirKenesbay Посмотреть сообщение
Java Collection Framework (за исключением java.util.Arrays) и регулярные выражения использовать нельзя.
Java
1
2
3
4
final String[] words = {"qqqqqqqqqqwe", "qwer", "123", "4321"};
final Predicate<String> allDigitsPredicate = s -> s.chars().allMatch(Character::isDigit);
final var result = Arrays.stream(words).filter(allDigitsPredicate).skip(1).findFirst();
result.ifPresent(System.out::println);
0
 Аватар для InvalidCode
295 / 470 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
27.10.2021, 13:54
Цитата Сообщение от AmirKenesbay Посмотреть сообщение
регулярные выражения использовать нельзя
Сделай посимвольную проверку каждого слова, например:
Java
1
2
3
4
5
6
7
boolean isDigit = true;
for(int i = 0; i < words[index].length(); i++){
    if(words[index].charAt(i) < '0' || words[index].charAt(i) > "9"){
        isDigit = false;
        break;
    }
}
0
0 / 0 / 1
Регистрация: 10.10.2016
Сообщений: 76
27.10.2021, 13:59  [ТС]
А нельзя решить без стримов и лямбд выражении? Именно в методе displayNumberContainingOnlyDifferentDigi ts

Добавлено через 4 минуты
Java
1
2
3
4
5
for (int i = 1; i < ch.length - 1; i++) {
            if (ch[i] >= '0' && ch[i] <= '9') {
                System.out.println(i + " element: " + ch[i] + " ");
      }
}
Ладно я нашел только числа от 0 до 9, но как именно вывести второй элемент строкового массива, если присутствует еще одна.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
27.10.2021, 14:06
Цитата Сообщение от AmirKenesbay Посмотреть сообщение
но как именно вывести второй элемент строкового массива, если присутствует еще одна.
Кури: ReferencePipeline.skip.
0
0 / 0 / 1
Регистрация: 10.10.2016
Сообщений: 76
27.10.2021, 14:19  [ТС]
Не понимаю как это реализовать в моем коде
0
14 / 11 / 3
Регистрация: 13.07.2018
Сообщений: 37
27.10.2021, 14:56
У вас метод называется displayNumberContainingOnlyDifferentDigi ts, т.е. элемент должен содержать разные цифры?
0
0 / 0 / 1
Регистрация: 10.10.2016
Сообщений: 76
27.10.2021, 15:14  [ТС]
Объясню по подробнее. В строке содержаться буквенные и численные символы. Надо вывести численные символы. Но тут такое условие, что если допустим во втором индексе 123, а в третьем 4123, а может еще в четвертом 547. И соответственно надо вывести вторую, а точнее 4123.
0
14 / 11 / 3
Регистрация: 13.07.2018
Сообщений: 37
27.10.2021, 15:26
Лучший ответ Сообщение было отмечено AmirKenesbay как решение

Решение

Короче если для уникальных цифр в числе то код такой:
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
public class Application {
    public static void main(String[] args) {
        String[] words = new String[]{"qqqqqqqqqqwe", "qwer", "123", "4321"};
        StringProcessor stringProcessor = new StringProcessor();
        stringProcessor.displayNumberContainingOnlyDifferentDigits(words, 2);
    }
}
 
class StringProcessor {
    public boolean isOnlyDigits(String word) {
        if (word == null) {
            return false;
        }
 
        for (int i = 0; i < word.length(); i++) {
            if (word.charAt(i) < '0' || word.charAt(i) > '9') {
                return false;
            }
        }
 
        return true;
    }
    public boolean isOnlyDifferentDigits(String word) {
        if (word == null || word.length() > 10) {
            return false;
        }
        byte[] digitBitTable = new byte[10];
 
        for (int i = 0; i < word.length(); i++) {
            if (word.charAt(i) >= '0' && word.charAt(i) <= '9') {
                if (digitBitTable[word.charAt(i) - '0'] == 0) {
                    digitBitTable[word.charAt(i) - '0'] = 1;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }
 
        return true;
    }
    public void displayNumberContainingOnlyDifferentDigits(String[] array, int maxOrderNumber) {
        int count = 0;
        String lastFound = null;
        for (String element : array) {
 
            if (isOnlyDifferentDigits(element)) {
                lastFound = element;
                count++;
                if (count == maxOrderNumber) {
                    System.out.println("Число, состоящее только из различных цифр: " + element + " и " + count + "-е по счету");
                    return;
                }
            }
        }
        if (lastFound != null) {
            System.out.println("Число, состоящее только из различных цифр: " + lastFound);
        } else {
            System.out.println("Таких чисел нет!");
        }
    }
}
Если нужны просто только цифры в числе без уникальности, то метод isOnlyDifferentDigits можно упростить до isOnlyDigits, т.е. вызов isOnlyDifferentDigits замените на isOnlyDigits
1
0 / 0 / 1
Регистрация: 10.10.2016
Сообщений: 76
27.10.2021, 19:23  [ТС]
Спасибо все работает отлично, отличный алгоритм, понял принцип работы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.10.2021, 19:23
Помогаю со студенческими работами здесь

Найти слово максимальной длины. Если таких слов несколько, то вывести последнее
Здравствуйте! Помогите, пожалуйста, решить задачку Дан текст, записанный латинскими буквами. Длина текста не менее 300 символов и...

Найти самое длинное слово среди слов, вторая буква которых есть 'E'.Если слов с наибольшей длиной несколько, найти последнее.
Дан символьный файл(имя вводится с клавиатуры). Найти самое длинное слово среди слов, вторая буква которых есть 'E'.Если слов с наибольшей...

Вывести самое короткое слово в предложении. Если таких слов несколько, то вывести последнее из них
Дана строка-предложение на русском языке. Вывести самое короткое слово в предложении. Если таких слов несколько, то вывести последнее из...

Вывести самое короткое слово в предложении, если таких слов несколько, то вывести последнее из них
Дана Строка-предложение на русском языке. Вывести самое короткое слово в предложении. Если таких слов несколько, то вывести последнее из...

Вывести самое короткое слово в предложении.Если таких слов несколько то вывести последнее из них
Дана строка-предложение на русском языке.Вывести самое короткое слово в предложении.Если таких слов несколько то вывести последнее из...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru