Как исправить код по поиску нужного слова "КУБ" с остановкой словом "СТОП"?

Пользователь вводит слова до тех пор, пока не введёт СТОП.
Каждое слово вводится на новой строчке.
Необходимо выяснить, было ли среди введённых слов слово Куб.
Если да, то выведите YES, если нет, то NO.
Через цикл for на java.

Вот пробовал так написать.
Работает неправильно (нужно 2 раза вводить стоп и слово КУБ не всегда находит).

import java.util.Scanner;
    
class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String n = sc.nextLine();
        boolean is_0 = false;
        for (String a = sc.nextLine()) {
            int a = sc.nextInt();
            if (a.equals("СТОП")) {
                is_0 = true;
                break;
            }
        }
        if (is_0)
            System.out.println("yes");
        else
            System.out.println("no");
    }
}

Ответы (2 шт):

Автор решения: Mikhail Rudnev
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        boolean is_0 = false;
        String string = "";
        while (!string.equals("STOP")) {
            string = sc.nextLine();
            if (string.equals("KYB")) {
                is_0 = true;
            }
        }
        sc.close();
        if (is_0) {
            System.out.println("yes");
        } else {
            System.out.println("no");
        }
        return;
    }
}

Перевод с англ на русский реализуйте самостоятельно и другие доработки, если в них есть необходимость (чтение разных регистров итд) В цикле while проверка на то что строка не равна значению, на котором необходимо цикл остановить. Внутри цикла проверка на равенство строки определенному (искомому) слову. По окончанию цикла необходимо закрыть сканнер и вывод результата в соответствии с условием (найдено слово в полученных строках или нет)

→ Ссылка
Автор решения: Nowhere Man

Представленный код содержит массу ошибок:

  1. Объявлена строковая переменная n, которая нигде не используется, но для которой считывается строка -- то есть, теряется ввод.
  2. Цикл for записан с ошибкой, так как содержит только часть присваивания без проверки условия и изменения -- см. базовый туториал, он должен выглядеть так for (initialization; termination; increment) { statements }
  3. Переменная a объявлена дважды, второй раз с типом int, но тем не менее сравнивается со словом "СТОП"
  4. В цикле нигде не проверяется совпадение с требуемым словом "КУБ".

Исправленный код может выглядеть так:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    boolean found = false;
    for (String line = ""; sc.hasNextLine() && !"СТОП".equalsIgnoreCase(line); ) {
        line = sc.nextLine();
        if ("Куб".equalsIgnoreCase(line)) {
            found = true;
        }
    }
    System.out.println(found ? "yes" : "no");
}
→ Ссылка