Проверка символа: str.contains("л")
А по ArrayList удобно идти с конца - тогда удаление текущего элемента или добавление (i+1)'ой копии на цикл не влияет.
Уважаемые авторы курса. Откорректируйте проверку заданий. В последней задаче у меня правильное решение, однако проверку не проходит, т.к. логика решения, видимо несколько отличается от "эталонной". Пришлось запустить с листингом из подсказки, чтобы закрыть задачу.
Текст моего решения.
public class Solution {
public static void main(String[] args) throws IOException {
//напишите тут ваш код
ArrayList<String> list = new ArrayList<String>();
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 10; i++) {
list.add(sc.next());
}
for (int i = 1; i < 10; i++) {
if (!(list.get(i).length() >= list.get(i-1).length())) {
System.out.println(i);
break;
}
}
}
}
ArrayList динамически растягивает размер своего массива при добавлении и соответственно динамически, сразу же (!) его сокращает при удалении своего элемента из. Сокращенную форму цикла (х : х) при манипуляциях с отдельными элементами использовать невозможно. Поэтому до цикла-перебора создаем новый отдельный массив-лист и добавляем или не добавляем в него элементы. И соответственно его же потом и возвращаем. Так же используем операторы перехода в Java.
Проблема:
Когда с клавиатуры ввожу в список строки,
а потом вывожу список на консоль, то получается:
[стока 1, ,строка 2, ,строка 3]
и всё! А должно быть 5 строк.
Получается - каждое нажатие Enter дает еще пустую строку,
которая прячется между моими. И не придерешься!
5 строк,
как и планировалось! Тока не те...
Задачки успешно проходят javarush тестирование!😃👍
А если отдельно запускаю, то вот такая хрень😐
Какие будут мнения?
(заранее спасибо!)
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add(reader.readLine());
}
System.out.println(list);
}
}
Когда ввожу третью строку и жму Enter, программа выводит:
[стока 1, ,строка 2, ,строка 3]
и завершается
На самом деле - прежде чем решать подобные задачи нужно пройти полный курс java collections framework где нибудь на стороннем сайте онлайн - университета. Я например, сначала прочитал и законспектировал теорию с Алишева, включая платный курс по углубленым знаниям java, затем частично проштудировал книгу Шилдта, пообщался с человеком, который в теме, и лишь потом пришел решать сюда задачи, чтобы понять - что я пропустил в теоретической подготовке. И такие дыры вылезают...
Глубоко копнул) Я пока посмотрел канал GMByte (он довольно старенький, но для начала и общего понимания пойдёт). Алишева ещё не пересмотрел, рандомно высматриваю по темам, но тоже хочу всё по порядку пройти, чтобы проще было здесь задачи решать и теорию воспринимать по множествам ссылок от проЦессора😁
С моей "базой" задачи именно этого уровня пока идут трудновато.
Решил всё без collections. Всё решается методами Strings и ArrayList, но погуглить и почитать пришлось. Мне например тяжелее по памяти просто код печатать, грамматику языка ещё не выучил(((
Закон Паре́то (принцип Парето, принцип 80/20) — эмпирическое правило, названное в честь экономиста и социолога Вильфредо Парето, в наиболее общем виде формулируется как «20 % усилий дают 80 % результата, а остальные 80 % усилий — лишь 20 % результата».
На практике жизни, как ни странно, это правило часто подтверждает свою состоятельность.
Тут очень плохие лекции за исключением лекций Нудлса. Ничего не понятно. Решаю задачи часто не знаю всего необходимого "арсенала". Почти всё приходится читать на стороне. Мало примеров с разбором вариантов. Полгода по 3-4 часа в день дошел до 13 уровня.
Просто надо понимать логику создателей курса. Я тоже до конца нее не понимал, пока не ознакомился с одной из теорий обучения, которой, видимо придерживаются авторы.
Согласно этой теории, надо давать обучающимся задание "на попробовать", с условием, что уровня их знания не достаточно для ее решения. Чтобы дать им ознакомиться с постановкой задачи и подогреть интерес к изучению "недостающего" материала. После этого дать недостающий материал, а затем закрепить этот материал на дополнительной практике.
Другое дело, что тут не объясняется нигде этот принцип. Но судя по тому, как тут раздается материя, решения задач на уровне easy как раз должно хватать для прохождения курса. Видимо подразумевается, что к решению более сложных задач можно вернуться потом, после углубленной подачи материала. Но это в том случае, если с первого раза знаний не хватило.
Мне пока хватает, хотя приходится немного почитать "на стороне".
если нет необходимости в особом порядке перебора или опоре на индексы элементов, абстрагируйтесь от лишней информации заменив for на foreach. Если же порядок и/или количество важны, то foreach вряд ли подойдет. Обращаться к индексам удобнее в циклах со счетчиком.
--если нет необходимости в особом порядке перебора
или другой критерий:
если коллекция не изменяется (печатаем или копируем в другую или что-то ищем/считаем) то foreach, иначе цикл с индексами.
На мой взгляд, требования к задаче "Р или Л" нуждаются в уточнении:
вместо "Метод fix должен удалять из списка строк все слова, содержащие букву "р"..." следует указать "Метод fix должен обеспечить ПРОПУСК тех слов из списка, которые..."
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ