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

  • 12
  • Недоступна
Это мы с вами чётко знаем, какие буквы гласные, а какие – согласные. Нам предстоит этому учить умных роботов, поэтому напишем программку для их обучения. В ней пользователь будет вводить с клавиатуры строку текста, а специальный метод поможет разделить данные на две строки, одна со всеми гласными введенной строки, вторая — только с согласными.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (240)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
masher9 уровень, Одесса
29 травня, 04:18
Тоже решила с помощью списков и массива символов. Но я ввод осуществляла через BufferedReader - валидатор это не пропустил. А через Сканер - все скомпилировалось. Но, конечно, просто с символами и строками код получается на много короче.
aleksey14 уровень, Одесса
24 травня, 18:42
Вот бы еще в подсказках обратили внимание, что при сравнении символа и char , символ надо брать в ОДИНАРНЫЕ кавычки. В лекциях этого нигде не было. а в глаза это не бросается, перерыл кучу сайтов и не мог понять почему ch != " " не работает(отличие кавычек почти не заметно). Плюнул и вначале удалил все пробелы из строки через s=s.replaceAll(" ", ""); ну а потом все как обычно. Но задача интересная , в отличии от других
Алексей Петрик12 уровень, Комсомольск-на-Амуре
24 травня, 04:03
Если следовать условию, то работа со строками, а не с масивами и др.) значит выдергиваем символ и сверяем на гл. или согл.и тем самым формируем две строки(конечно же в цикле и в длину строки):
char ch = str.charAt(i);
if (ch != ' '){
    if (isVowel(ch)) strGl += String.valueOf(ch) + ' ';
    else strSogl += String.valueOf(ch) + ' ';
Plunder11 уровень, Санкт-Петербург
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 + " ", чтобы следовать условию что знаения должны быть выведены через пробел
Миша10 уровень, Сранопипирск
неділя, 09:48
О, офигенно, запомню. Ну и можно ограничиться одним циклом, просто создав строку для гласных и согласных и выведя их на экран после цикла
Дмитрий Ильин12 уровень, Cheboksary
21 травня, 12:37
Возможно не самое эффективное решение, но самое очевидное для меня: 1. Считал строку и удалил пробелы методом replaceAll(); 2. Преобразовал String в массив символов char методом toCharArray(); 3 Циклом for перебирал созданный нами массив символов и обращаемся с каждый символом к функции isVowel();. Т.к этот isVowel(); возвращает true или false то через условие if (isVowel(strToArray[i])) выводим символы. p.s Лично я использовал два цикла for , чтобы первым циклом вывести гласные, а вторым согласные. Между этими циклами поставил перенос строки
Alexander Korzhov12 уровень, Минск
18 травня, 13:24
не думаю, что это самое простое решение, но всё же создал два ArrayList, в один добавлял гласные, в другой -- остальное для того, чтобы разбить стрингу на чары использовал char ch = str.charAt(i), где i - номер символа, который хотим получить из строки чтобы проверить, не является ли символ, который мы добавляем в массив с НЕ гласными, пробелом, надо использовать if(!ch = ' '), тк кавычки, которые мы все привыкли использовать для чаров не подходят Мб кому-то будет полезно)
Алексей Подъянов13 уровень, Екатеринбург
17 травня, 14:09
Использовал метод вот такую конструкцию
String str = reader.readLine().replaceAll("\\s","");
для ввода строки без пробела. разбил строку на char
char[] result = str.toCharArray();
А потом проверял побуквено на соответствие циклами
Yulia18 уровень
14 травня, 16:30
решила через массив char[] и 2 StringBuilder'a для строки с гласными и строки с согласными. Пробелы не удаляла, просто добавила перед проверкой на "гласные" условие if (c != ' '){}.
Вадим15 уровень, Саранск
11 травня, 18:27
Особо не размышлял, как проще и быстрее делать. Че в голову первое пришло, так и сделал. 1) Делаем два списка (гласные и согласные) 2) Считываем строку и с помощью метода split(" ") удаляем все пробелы (пробел используется в качестве разделителя). На выходе получается массив строк без пробелов. 3) Склеиваем в одну строку полученный массив. Тем самым у нас получилась единая строка без пробелов. И сразу разбиваем эту строку на массив символов методом toCharArray() 4) Циклом проходимся по массиву символов, проверяя с помощью метода isVowel() гласная буква или нет. Если гласная, добавляем в список гласных и следом же добавляем пробел. Если нет, то в согласные 5) Циклами выводим на консоль 2 списка. В общем 4 цикла пришлось использовать. Массивно конечно, но работает. У кого короче решение есть, сбросьте в личку, если не жалко
Glock13 уровень, Энгельс
2 травня, 18:25
решил сам с первого запуска, для меня это достижение прям )))
Tamara Palaeva17 уровень, Самара
5 травня, 12:07
Объясните, пожалуйста что хочет эта задача. Сделала проверки оставшихся символов на пробел - не нравится, Добавила еще и проверку на цифры - не нравится Загнала согласные и знаки о отдельный массив - тоже не нравится. Что он хочет увидеть в конце??????
Tamara Palaeva17 уровень, Самара
5 травня, 13:50
Нашла что задача хочет. Ему важен регистр. Если буква заглавная - заглавной она и должна быть на выводе
Вадим15 уровень, Саранск
11 травня, 18:10
Я тоже обшибся с этим моментом и запорол несколько попыток.На консоль выводил все уменьшая регистр. А оказывается надо выводить все как есть...