Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/50: Рейтинг темы: голосов - 50, средняя оценка - 4.68
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517

Чтение русского текста в String через консоль

16.10.2012, 18:59. Показов 9985. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код
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
public class JavaApplication1 {
    public static void main(String []args) throws IOException
    {
        String str = new String();
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in,"UTF-8"));
        
        System.out.println("Введите строку текста: ");
        str=br.readLine();
        //System.out.println(str);  
 
        int aCount=0;
        int aLastIndex=0;
            
        int bCount=0;
        int bLastIndex=0;
            
        aLastIndex=str.indexOf("а",aLastIndex);
        while(aLastIndex != -1)
        {
            aCount++;
            System.out.println("Есть буква а");
            aLastIndex=str.indexOf("",++aLastIndex);
        }
        
        bLastIndex=str.indexOf("в",bLastIndex);
        while(bLastIndex != -1)
        {
            bCount++;
            bLastIndex=str.indexOf("в",++bLastIndex);
        }
        System.out.println(str);   
    }
}
Если ввести англ. текст то всё будет хорошо, а вот если русский то возникает проблема. Первая это то что при выполнении строки 10 если вводишь русский текст и нажимаешь энтер то ничего не происходит и ридер ждёт пока ты ещё что-то введёшь и нажмёшь enter. Весьма странное поведение. Но дальше оказывется что в String str записались символы которые что в дебагере что при выводе выглядят как на прикреплённом изображении.
Что делать-то ? Ведь нужно считать строку текста и посчитать в ней количество вхождений русских букв а и б (кстати может для этого есть какая специальная функция-считалочка так вы скажите), а я и русскую строку то сохранить не могу в переменной.
IDE у меня Netbeans если это имеет значение.
Миниатюры
Чтение русского текста в String через консоль  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.10.2012, 18:59
Ответы с готовыми решениями:

Чтение русского текста из файла.
Здравствуйте. Мне нужно сделать чтение в кодировке utf-8 из файла и вывести его на экран, Я столкнулся с такой проблемкой, что вместо...

Чтение и запись в файл русского текста
FileInfo persons = new FileInfo(@"C:InetpubwwwrootWebApplication3db1.xml"); StreamReader reader = persons.OpenText(); StreamWriter...

string,switch, что делать, если требуется сравнение русского текста
int main() { setlocale(LC_ALL, "Russian"); ofstream fout(FILENAME); string inner,math_count, rl = "текст1"; int ct = 19; ...

8
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
16.10.2012, 19:17  [ТС]
Добавлю что символы не только не видно но они и не хранятся как положено так как строка 23 ни разу не выполнилась.

Добавлено через 14 минут
Сюда пожалуйста не отправлять. Я почитал, но не помогло, точнее не нашёл выхода. Там что-то о локальных настройках и японских шрифтах, но русские шрифты уж у меня в системе точно есть.

Добавлено через 2 минуты
Решил проблему вот так:
Java
1
BufferedReader br = new BufferedReader(new InputStreamReader(System.in,"Cp1251"));
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
16.10.2012, 20:54
Цитата Сообщение от Gepar Посмотреть сообщение
Сюда пожалуйста не отправлять. Я почитал, но не помогло, точнее не нашёл выхода.
и то что там чёрным по серому в выделенном квадратике написано
Java
1
2
BufferedReader reader = new BufferedReader(
                            new InputStreamReader(<stream to read>, "<encoding name>"));
это пофигу конечно же
2
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
16.10.2012, 21:33  [ТС]
Ну о CP1251 там не написано, а UTF-8 вполне может хранить русские символы же так что я до конца не понял что именно было не так. То что проблема решилась вижу,а почему так мне и сейчас не ясно.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
16.10.2012, 23:33
Цитата Сообщение от Gepar Посмотреть сообщение
Ну о CP1251 там не написано, а UTF-8 вполне может хранить русские символы же так что я до конца не понял что именно было не так. То что проблема решилась вижу,а почему так мне и сейчас не ясно.
русские символы могут хранить куча кодировок, не только UTF-8 и Cp1251 (koi8-r, cp866 ....) вопрос не в этом а в том какую вы пытаетесь прочитать из файла
Например я могу записать файл в UTF-16 или UTF32 и там тоже будет русский
0
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
17.10.2012, 09:44  [ТС]
mutagen, я то пытаюсь прочитать с клавиатуры. Если бы с файла то там и так понятно что всё было бы в какой-то опред. кодировке, а вот при чтении с клавиатуры определил методом тыка что нужна 1251ая.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
17.10.2012, 10:26
Цитата Сообщение от Gepar Посмотреть сообщение
mutagen, я то пытаюсь прочитать с клавиатуры. Если бы с файла то там и так понятно что всё было бы в какой-то опред. кодировке, а вот при чтении с клавиатуры определил методом тыка что нужна 1251ая.
То что в русском Windows кодировка везде по умолчанию Cp1251, а в консольном режиме cp866 Вы вполне можете быть невкурсе.
Но то что если использовать
Java
1
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
невкурсе можно быть непочитав доки

Не по теме:

public InputStreamReader(InputStream in)
Creates an InputStreamReader that uses the default charset.
Parameters:
in - An InputStream



ну и в конце концов всегда можно проверить что же там по умолчанию
Java
1
2
3
4
5
6
7
8
9
10
11
import java.io.InputStreamReader;
 
 
public class ConsoleInput {
 
    public static void main(String[] args) {
        InputStreamReader isr = new InputStreamReader(System.in);
        System.out.println(isr.getEncoding());
    }
 
}
2
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
17.10.2012, 11:22
Цитата Сообщение от Gepar Посмотреть сообщение
mutagen, я то пытаюсь прочитать с клавиатуры. Если бы с файла то там и так понятно что всё было бы в какой-то опред. кодировке, а вот при чтении с клавиатуры определил методом тыка что нужна 1251ая.
Это Вы как-то странно определили. По умолчанию в консоли Cp866. Или же Вы где-то делаете chcp 1251, тогда да, в консоли будет Cp1251. Вот это еще посмотрите насчет консоли:
1
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
17.10.2012, 12:56  [ТС]
Цитата Сообщение от Skipy Посмотреть сообщение
Это Вы как-то странно определили.
Почему странно? Научный метод тыка

Цитата Сообщение от Skipy Посмотреть сообщение
По умолчанию в консоли Cp866. Или же Вы где-то делаете chcp 1251
Нет, нигде ничего не менял, это точно. ОС не так давно поставил.
Ну а вообще я просто ожидал что не надо мне кодировку указывать раз уж я с клавиатуры читаю, а оно и так догадается обо всём ...

Добавлено через 1 минуту
Цитата Сообщение от mutagen Посмотреть сообщение
невкурсе можно быть непочитав доки
Каюсь к докам не присматривался так как InputStreamReader раньше пользовался и до этого он вёл себя так как и ожидалось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.10.2012, 12:56
Помогаю со студенческими работами здесь

Чтение текста из String и создание на его основе текста в Textbox
Дорогие друзья, суть проблемы: допустим у нас есть label в котором посредством запроса WMI получаем информацию (информация из разряда...

Чтение текста из текстового фала, обработка слов и вывод в консоль
Задача программы: считать текст из текстового файла; выделить слова с повторяющимися буквами другим цветом; вывести весь текст в консоль. ...

Чтение всего текста из файла в string
Собственно вопрос. Как читать весь текст из файла в string Не в string а в string Также к загружаемому тексту нужно будет применять...

Как искать любой символ русского текста в кодировке UTF8 через Rlike?
Делаю поиск для библиографии. Поскольку нужно искать по словам, использую Rlike (Regexp). База на mysql в кодировке UTF8. Проблема...

Консоль и Qt. Возможность работать как через консоль так и через графический интерфейс
Может кто-то знает... Как в одном и том же приложении совместить возможность запуска и через консоль и через разработанный через Qt...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Камера 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, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru