Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 3

Консольное приложение Java

15.04.2019, 19:49. Показов 4181. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не получается создать программу . Задание : создать текстовую переменную str1 и разместить в ней несколько слов через пробелы , причём первая и последняя буква некоторых слов должны совпадать , например str1=“текст слово тест».Найти слова ,у которых первая и последняя буква совпадают. Посчитать кол-во найденных слов и результат сохранить в переменную к. Выполнить расчёт по формуле :у=корень(длина(str1)/(k^2/2)). Результат расчета и промежуточные значения переменных вывести в консоль.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.04.2019, 19:49
Ответы с готовыми решениями:

Консольное приложение на java
Всем, привет. Раньше только фреймовые приложения прокатывал через launch, а теперь мне нужно консоль получить на java. Подскажите,...

Консольное приложение Java
Здравствуйте. Решил обратиться у самым умелым, дабы взять хоть какое-то знание об этом языке, т.к лектор ничего толком не объясняет. ...

Разработать консольное приложение на Java
Помогите решить уравнение. Функция представлена в виде своего ряда Тейлора. Вычислить приближённое значение суммы этого бесконечного...

14
 Аватар для Veseliy Hakker
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
16.04.2019, 08:00
Первое - создать текстовую строку
Второе - посчитать количество слов в строке
Третье - вывести длину строки

второй пример, я так понимаю, математический.

Добавлено через 1 час 53 минуты
Интересная задача, я примерно понял как ее решить. Сначала нужно сплитануть строку на слова по разделителю, по пробелу. А затем уже сравнивать начальный и конечный индексы. Если равны, то вывести на экран. Только я еще не дочитал до этого места. Прочту - скину ответ )
0
 Аватар для InvalidCode
295 / 470 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
16.04.2019, 09:19
Лучший ответ Сообщение было отмечено Виктория0987 как решение

Решение

Цитата Сообщение от Виктория0987 Посмотреть сообщение
создать текстовую переменную
Java
1
String str1 = "vasya alkash konchenuy yOy buhae mnogo OOOOOO";
Цитата Сообщение от Виктория0987 Посмотреть сообщение
которых первая и последняя буква совпадают
для начала разрежим нашу переменую на масив слов
метод порезки строки на слова по маркеру
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static String[] recut(String s, String marker) {
        int[] i = allIndexOf(s, marker);
        String[] ss = null;
        if(i != null){
            ss = new String[i.length + 1];
            ss[0] = s.substring(0, i[0]);
            for(int a = 1; a < i.length; a++){
                ss[a] = s.substring(i[a - 1] + marker.length(), i[a]);
            }
            ss[ss.length - 1] = s.substring(i[i.length - 1] + marker.length());
        }
        else{
            ss = new String[]{s};
        }
        return ss;
    }
+ метод обнаружения количества маркеров
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static int[] allIndexOf(String s, String marker){
        //вишукує загальну кількість входжень заданої строки(або символу переданої як String)
        int[] ii = null;
        ArrayList<String> a = new ArrayList<String>();
        for(int i = 0; i < s.length() - (marker.length() - 1); i++){
            if(marker.equals(s.substring(i, i + marker.length()))){
                a.add("" + i);
            }
        }
        if(a.size() > 0){
            ii = new int[a.size()];
            for(int i = 0; i < a.size(); i++){
                ii[i] = Integer.parseInt(a.get(i));
            }
        }
        return ii;
    }
теперь режем нашу строку
Java
1
String[] s = recut(str1, " ");
теперь в цикле проверяем совпадает ли первая и последняя буква, сделать это можно несколлькими способами, удобнфй для себя выбереш сама
способ 1
Java
1
2
3
4
5
6
7
int k = 0;
        for(int i = 0; i < s.length; i++){
            char[] c = s[i].toCharArray();
            if((int)c[0] == (int) c[c.length - 1]){
                k++;
            }
        }
Способ 2
Java
1
2
3
4
5
6
        int k = 0;
        for(int i = 0; i < s.length; i++){
            if(s[i].substring(0, 1).equals(s[i].substring(s[i].length() - 1))){
                k++;
            }
        }
Виводим количество слов
Java
1
System.out.println("Вобшем я нащитал " + k + " таких слов, а ты ежели нам, електронным мозгам не веришь, щитай сама;(");
общет
Java
1
2
double y = Math.sqrt((str1.length() / (Math.pow(k, 2) / 2)));
System.out.println(y);
усьо
2
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
16.04.2019, 10:26
Лучший ответ Сообщение было отмечено Виктория0987 как решение

Решение

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
import java.util.Arrays;
 
public class Task02 {
    public static void main(String[] args) {
        String str = "текст слово тест";
        System.out.println("Дана строка: " + str + ";");
 
        //делим строку на слова по пробелу
        String[] words = str.trim().split("\\s+");
        System.out.println("Слова: " + Arrays.toString(words));
 
        //считаем кол-во слов, у которых первая и последняя буква совпадают
        System.out.print("Слова с одинаковой первой и последней буквой: ");
        int k = 0;
        for (String word : words) {
            word = word.toLowerCase();
            if (word.length() > 0 && word.charAt(0) == word.charAt(word.length() - 1)) {
                System.out.print(word + " ");
                k++;
            }
        }
        System.out.println("\nКол-во таких слов: " + k + ";");
 
        //считаем формулу
        if (k != 0) {
            double y = Math.sqrt(str.length() / (Math.pow(k, 2) / 2.0));
            System.out.printf("Ответ: y = %.2f;\n", y);
        } else {
            System.out.println("Ответ: нет решения формулы.");
        }
    }
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
16.04.2019, 17:16
Лучший ответ Сообщение было отмечено Виктория0987 как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Scanner;
 
public class SameHeadTailWords {
    public static void main(String[] args) {
        var scanner = new Scanner(System.in);
 
        while ( true ) {
            System.out.print("String: ");
            String str = scanner.nextLine();
            if ( str.isEmpty() )
                break;
 
            long shtWords = str.trim().replaceAll("\\s+", "\n").lines().filter(w -> w.charAt(0) == w.charAt(w.length() - 1)).count();
            System.out.println("Found " + shtWords + " words.\nResult: " + (( shtWords == 0 ) ? "undefined" : String.valueOf(Math.sqrt(str.length() / (shtWords * shtWords / 2.0)))));
        }
 
        scanner.close();
    }
}
1
 Аватар для Veseliy Hakker
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
16.04.2019, 19:58
Не знаю как топик стартеру, а мне очень понравилось ) Спасибо большое)
0
 Аватар для Veseliy Hakker
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
24.04.2019, 16:52
InvalidCode, Привет! Мне понравился ваш код и я пытаюсь в нем разобраться. Но никак не могу понять
Java
1
2
 public static String[] recut(String s, String marker)
 public static int[] allIndexOf(String s, String marker)
данные строки кода это просто объявление статического метода или же это некий статический массив, в который записываются результаты обработки?
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
24.04.2019, 18:11
Veseliy Hakker, это объявление метода. Массивы создаются как-то так:
Java
1
public static String[] arr = new String[100];
1
 Аватар для InvalidCode
295 / 470 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
25.04.2019, 08:01
Veseliy Hakker, это методы.
Java
1
recut(String s, String marker)
- Запускаем из маин
Java
1
String[] s = recut(str1, " ");
Java
1
allIndexOf(String s, String marker)
- Визивается из метода recut, его не трогаем
1
 Аватар для Veseliy Hakker
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
25.04.2019, 20:05
InvalidCode,
Цитата Сообщение от InvalidCode Посмотреть сообщение
Veseliy Hakker, это методы.
JavaВыделить код
1
recut(String s, String marker)
- Запускаем из маин
JavaВыделить код
1
String[] s = recut(str1, " ");
JavaВыделить код
1
allIndexOf(String s, String marker)
- Визивается из метода recut, его не трогаем
Спасибо. Но я не совсем понял как работает данный код. Я понял, что перебираются индексы и берется значение пробела в байтах, равное 32... В общем, можно немного поподробнее расписать что там к чему? Мне очень интересен данный подход.

Добавлено через 3 часа 40 минут
InvalidCode, Разобрался с кодом, там кое что лишнее убрал
было так
Java
1
2
3
4
5
 for(int i = 0; i < s.length() - (marker.length() - 1); i++){
            if(marker.equals(s.substring(i, i + marker.length()))){
                a.add("" + i);
            }
        }
а можно так:
Java
1
2
3
4
5
for (int i = 0; i < s.length(); i++) {
            if (p.equals(s.substring(i, i + p.length()))) { //от 0 до конца слова
                a.add("" + i);
            }
        }
Хотя и можно было просто split() использовать, но такой вариант более универсальный. Немного помудрив можно получить разные варианты нарезки слов, замены и многое другое. За одним научился работать с коллекциями и массивами. Спасибо автору, было очень познавательно )
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
25.04.2019, 20:32
Veseliy Hakker, из любопытства вопрос возник:
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
Хотя и можно было просто split() использовать, но такой вариант более универсальный
чем?

По сути тоже самое, но сплит, думаю, универсальнее из-за возможности использовать регулярные выражения:
Java
1
2
3
private static String[] divStr(String text, String prefix) {
    return text != null ? text.trim().split(prefix) : new String[0];
}
Java
1
2
3
4
...
String text = "  asd      dsd             sdds    sd";
String[] first = divStr(text, " ");
String[] second = divStr(text, "\\s+");
Посмотри разницу между массивом first и second

Добавлено через 2 минуты
Вариант 2:
Java
1
2
3
private static String[] getWords(String text) {
    return text != null ? text.replaceAll("\\p{Punct}", " ").trim().split("\\s+") : new String[0];
}
Добавлено через 1 минуту
Java
1
2
3
4
...
String text = "  ..asd,      dsd...             sdds!    sd!!!";
String[] first = getWords(text);
String[] second = divStr(text, " ");
и теперь разницу

Добавлено через 14 минут
можно ещё так, без split:
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
import java.util.ArrayList;
import java.util.List;
 
public class Task02 {
    private static List<String> getWords(String text) {
        List<String> list = new ArrayList<>();
        if (text != null) {
            String word = "";
            for (char symbol : text.toCharArray()) {
                if (Character.isLetter(symbol)) {
                    word += symbol;
                } else {
                    if (word.length() > 0) {
                        list.add(word);
                        word = "";
                    }
                }
            }
        }
        return list;
    }
 
    public static void main(String[] args) {
        String text = " sdfdf sdfdsf  fdsfdsf,sdfdsf,sdfds.. dsfds!!!";
        List<String> words = getWords(text);
        System.out.println("Words: " + words);
    }
}
Вывод:
Java
1
2
3
Words: [sdfdf, sdfdsf, fdsfdsf, sdfdsf, sdfds, dsfds]
 
Process finished with exit code 0
1
 Аватар для Veseliy Hakker
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
25.04.2019, 20:33
Цитата Сообщение от ArtemFM Посмотреть сообщение
Veseliy Hakker, из любопытства вопрос возник:
Сообщение от Veseliy Hakker
Хотя и можно было просто split() использовать, но такой вариант более универсальный
чем?
По сути тоже самое, но сплит, думаю, универсальнее из-за возможности использовать регулярные выражения:

Java
1
2
3
private static String[] divStr(String text, String prefix) {
* * return text != null ? text.trim().split(prefix) : new String[0];
}
...
String text = " *asd * * *dsd * * * * * * sdds * *sd";
String[] first = divStr(text, " ");
String[] second = divStr(text, "\\s+");
Посмотри разницу между массивом first и second
Добавлено через 2 минуты
Вариант 2:

Java
1
2
3
4
private static String[] getWords(String text) {
* * return text != null ? text.replaceAll("\\p{Punct}", " ").trim().split("\\s+") : new String[0];
}
Добавлено через 1 минуту
...
String text = " *..asd, * * *dsd... * * * * * * sdds! * *sd!!!";
String[] first = getWords(text);
String[] second = divStr(text, " ");
и теперь разницу
Допустим, что нужно не только по одному критерию выбрать слова, например по пробелу, но так, чтобы слово заканчивалось конкретной буквой, тогда придется создавать три параметра и по всем трем параметрам перебирать строку, чего split() сделать не может. А вот в методе уже можно все это обработать. А еще мне интересно с точки зрения генерации новых вариантов слов. Например, добавлять суфикс или окончание к словам: тетрадь - тетради - тетрадей - тетрадку и прочее. Такое встроенными средствами языка получить сложно. Легче решить и иное. Например, передавать полученные результаты в другую программу, но все как есть, а с определенными условиями.

Хотя, я имею не такой большой опыт владения языком java, чтобы делать такие выводы, могу и ошибаться...
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
25.04.2019, 20:35
или даже так, с возможностью устанавливать минимальную длину слова:
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
import java.util.ArrayList;
import java.util.List;
 
public class Task02 {
    private static List<String> getWords(String text, int minLengthWord) {
        List<String> list = new ArrayList<>();
        if (text != null) {
            String word = "";
            for (char symbol : text.toCharArray()) {
                if (Character.isLetter(symbol)) {
                    word += symbol;
                } else {
                    if (word.length() >= minLengthWord) {
                        list.add(word);
                    }
                    word = "";
                }
            }
        }
        return list;
    }
 
    public static void main(String[] args) {
        String text = " sdfdf sdfdsf  fdsfdsf,a,bc,ccc,sdfdsf,sdfds.. dsfds!!!";
        List<String> words = getWords(text, 3);
        System.out.println("Words: " + words);
    }
}
Добавлено через 57 секунд
вывод:

Java
1
2
3
Words: [sdfdf, sdfdsf, fdsfdsf, ccc, sdfdsf, sdfds, dsfds]
 
Process finished with exit code 0
1
 Аватар для InvalidCode
295 / 470 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
30.04.2019, 10:26
Veseliy Hakker, ArtemFM, Вобщето я просто бросил нарезку из очень старого проекта. нужно было сделать нарезку строки на слова не используя split() (не знаю чем челам не угодил сей метод). но так как я всегда любил немного поиздеваться над тупыми ТЗ, предусмотрел вариант порезкт не просто по пробелу, а по любой комбинации.
Veseliy Hakker,
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
с точки зрения генерации новых вариантов слов
, небольшая наброска на сию тему(пока не доделано, и сделано для хим веществ, переводит названия химю вещест в [рідна]родовий відмінок[/рідна]):
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 String getNameAs(String s, int vid) {
        String st = "";
        if(vid == Token.ROD_VID){
            if(s.indexOf("сіль") != -1){
                s.replace("сіль", "солі");
                int ind = s.indexOf(" ") - 1;
                st = s.substring(0, ind) + "ої" + s.substring(ind + 1);
            }
            else if(s.indexOf("кислота") != -1){
                int ind = s.indexOf(" ") - 1;
                st = s.substring(0, ind) + "ої" + s.substring(ind + 1, s.length() - 1) + "и";
            }
            else if("а".equals(s.substring(s.length() - 1))){
                st = s.substring(0, s.length() - 1) + "и";
            }
            else if("о".equals(s.substring(s.length() - 1))){
                st = s.substring(0, s.length() - 1) + "а";
            }
            else if("й".equals(s.substring(s.length() - 1))){
                st = s.substring(0, s.length() - 1) + "ю";
            }
            else if(s.indexOf("кисень") != -1){
                st = "кисню";
            }
 
            else{
                st = s + "у";
            }
        }
        return st;
    }
ПС, иных вариантов нет, только сесть и самосу всю эту хрень написать
1
 Аватар для Veseliy Hakker
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
13.05.2019, 20:01
Это шедевр ) Спасибо )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2019, 20:01
Помогаю со студенческими работами здесь

Простое консольное приложение
Добрый день! Помогите пожалуйста написать программу на языке JAVA, суть такова: пользователь загадывает число от 0 до 100000, держит его...

Скомпилировать и запустить консольное приложение
Как скомпилировать код чтобы его можно было запустить с консоли. Пытался много раз и на этом сайте тоже, но не выходит. Я хочу...

Создать консольное приложение в NetBeans
Туристические путевки. Сформировать набор предложений клиенту по выбору туристической путевки различного типа (отдых, экскурсии, лечение,...

Консольное приложение с единственным аргументом ?
Доброго времени суток Помогите внести ясность в условие одной задачи: Создать консольное приложение с единственным аргументом...

Интерактивное консольное приложение с использованием паттерна MVC
Требование: Разработайте специальный класс-контейнер, который будет хранить значе-ния целевой последовательности (вектора, списка и т.п.)...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru