Гласные и согласные

  • 12
  • Недоступна
Это мы с вами чётко знаем, какие буквы гласные, а какие – согласные. Нам предстоит этому учить умных роботов, поэтому напишем программку для их обучения. В ней пользователь будет вводить с клавиатуры строку текста, а специальный метод поможет разделить данные на две строки, одна со всеми гласными введенной строки, вторая — только с согласными.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (255)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Kozzy Rock12 уровень, Санкт-Петербург
25 июля, 18:30
Странно, что многие выдумывали, как проверять пробел, хотя есть метод Character.isSpaceChar()
LeeSyash10 уровень, Днепр
вчера, 15:04
replaceAll("\\s","");
Никита Мохнач9 уровень, Киев
вчера, 17:50
можно и явно указать пробел replaceAll(" ","");
Kozzy Rock12 уровень, Санкт-Петербург
25 июля, 18:29
Что-то забыл как из ArrayList делать строку, сделал через StringBuilder, даже логичнее
Aleks14 уровень, Москва
10 июля, 15:55
1 Совершенно точно не нужно приводить вывод к нижнему регистру 2 Возможно будет ругаться на метод Char.isWhiteSpace() 3 Узнал что для сравнения типов данных char используются ' ' а не " ".
Kozzy Rock12 уровень, Санкт-Петербург
25 июля, 18:28
я использовал isSpaceChar, а не isWhiteSpace
Антон15 уровень, Санкт-Петербург
9 июля, 11:16
задача не заслуживает сложности hard. Условия интересные и можно бы было подумать, но уже прописанным методом isVowel задачу слишком упростили.
Александр10 уровень, Минск
6 июля, 09:06
Никакая она вроде и не хардовая, метод поиска написан, преобразовать строку в чар и прогнать по массиву и потом второй раз и исключая пробел, помойму проще некуда.... У кого проблемы с пробелом во втором массива сделал так isVowel(first[a]) == false & first[a] != ' '
Алексей14 уровень, Санкт-Петербург
19 июня, 13:59
Character.isWhitespace(strings[i])==false - мой способ борьбы с пробелами
Kozzy Rock12 уровень, Санкт-Петербург
25 июля, 18:28
isSpaceChar
masher10 уровень, Одесса
29 мая, 04:18
Тоже решила с помощью списков и массива символов. Но я ввод осуществляла через BufferedReader - валидатор это не пропустил. А через Сканер - все скомпилировалось. Но, конечно, просто с символами и строками код получается на много короче.
Иван15 уровень, Москва
5 июня, 16:43
У меня пропустил через BufferReader
aleksey14 уровень, Одесса
24 мая, 18:42
Вот бы еще в подсказках обратили внимание, что при сравнении символа и char , символ надо брать в ОДИНАРНЫЕ кавычки. В лекциях этого нигде не было. а в глаза это не бросается, перерыл кучу сайтов и не мог понять почему ch != " " не работает(отличие кавычек почти не заметно). Плюнул и вначале удалил все пробелы из строки через s=s.replaceAll(" ", ""); ну а потом все как обычно. Но задача интересная , в отличии от других
Алексей Петрик19 уровень, Комсомольск-на-Амуре
24 мая, 04:03
Если следовать условию, то работа со строками, а не с масивами и др.) значит выдергиваем символ и сверяем на гл. или согл.и тем самым формируем две строки(конечно же в цикле и в длину строки):
char ch = str.charAt(i);
if (ch != ' '){
    if (isVowel(ch)) strGl += String.valueOf(ch) + ' ';
    else strSogl += String.valueOf(ch) + ' ';
Evgeny Siganov10 уровень, Москва
9 июля, 13:38
String.valueOf можно не прописывать если пробел будет в двойных кавычках " "
Plunder17 уровень, Санкт-Петербург
21 мая, 20:56
Можно сделать на много строк — со списками, преобразованием в символы через toCharArray() и множественными циклами for each. Именно так я сначала и поступил — равно как и большинство из вас. Ведь это первое, что приходит на ум. А можно сделать короче. Считываем строку из консоли. Создаем новую строку с блэкджеком и шлю без пробелов (валидатору на цифры и прочие символы глубоко плевать):
String stringNew = string.replaceAll(" ", "");
Для вывода гласных задействуем метод charAt() через простой цикл for с указанием длины строки.
for(int i = 0; i < stringNew.length(); i++) {
   if(isVowel(stringNew.charAt(i)))
       System.out.print(stringNew.charAt(i));
}
Делаем то же самое для согласных (от кода выше отличается лишь добавлением восклицательного знака). И не забываем разделить оба цикла переходом на новую строку. ЗЫ А если не задействовать метод и массив исключений, приведенные в задаче изначально, то можно найти решение, которое вообще умещается в пять-шесть строчек (без учета консоли).
Damir Sib10 уровень, Санкт-Петербург
22 мая, 14:19
Крутое решение, спасибо! PS: ты забыл добавить в sout + " ", чтобы следовать условию что знаения должны быть выведены через пробел
Миша16 уровень, Сранопипирск
31 мая, 09:48
О, офигенно, запомню. Ну и можно ограничиться одним циклом, просто создав строку для гласных и согласных и выведя их на экран после цикла