Нужно удалить из списка "bug" и "Bug". Я решил сделать максимально просто: проверить на оба варианта отдельно. Код:
String word=list.get(i);
if(word.equals("Bug") || word.equals("bug"))
{
list.remove(i);
}
Но работает только первая проверка: bug остаётся в списке.
Если поменять их местами:
if(word.equals("bug") || word.equals("Bug"))
- то убирается только bug, а Bug остаётся.
В if ведь надо передавать булевское значение, а оператор || должен возвращать true, если хотя бы один операнд true. По крайней мере, так было в Си и я был уверен, что работает и в Джаве. Это не так? Или я ещё в чём-то ошибся?
package com.javarush.task.pro.task13.task1305;
import java.util.ArrayList;
import java.util.Iterator;
/*
Найти и обезвредить
*/
public class Solution {
public static void main(String[] args) {
ArrayList<String> words = new ArrayList<>();
words.add("Hello world!");
words.add("Amigo");
words.add("Elly");
words.add("Kerry");
words.add("Bug");
words.add("bug");
words.add("Easy ug");
words.add("Risha");
ArrayList<String> copyWordsFirst = new ArrayList<>(words);
ArrayList<String> copyWordsSecond = new ArrayList<>(words);
ArrayList<String> copyWordsThird = new ArrayList<>(words);
removeBugWithFor(copyWordsFirst);
removeBugWithWhile(copyWordsSecond);
removeBugWithCopy(copyWordsThird);
copyWordsFirst.forEach(System.out::println);
String line = "_________________________";
System.out.println(line);
copyWordsSecond.forEach(System.out::println);
System.out.println(line);
copyWordsThird.forEach(System.out::println);
System.out.println(line);
}
public static void removeBugWithFor(ArrayList<String> list) {
//напишите тут ваш код
for(int i=0;i<list.size();i++)
{
String word=list.get(i);
if(word.equals("Bug") || word.equals("bug"))
{
list.remove(i);
}
}
}
public static void removeBugWithWhile(ArrayList<String> list) {
//напишите тут ваш код
}
public static void removeBugWithCopy(ArrayList<String> list) {
//напишите тут ваш код
}
}