Ввод значения в консоль пока не введешь заданное

import java.io.BufferedReader;

import java.io.IOException;
import java.io.InputStreamReader;

public class GameRunner {

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s;
        do{
            s = reader.readLine();
        }
        while(!s.equals("qwe") || !s.equals("rty") || !s.equals("ttt"));

        System.out.println(s);
    }
}

если ввести qwe или rty или ttt компилятор не останавливается. Не пойму почему.


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

Автор решения: savra

Ваше условие всегда возвращает true. Надо либо использовать and (&&):

while(!s.equals("qwe") && !s.equals("rty") && !s.equals("ttt"));

либо применить отрицание ко всему выражению:

while(!(s.equals("qwe") || s.equals("rty") || s.equals("ttt")));
→ Ссылка
Автор решения: gil9red

И подскажите, как это можно реализовать, через while(true) Пожалуйста :)

Просто делаете бесконечный цикл, а в нем проверяете введенное значение и если оно совпадает с одним из заданных, о завершаете цикл через break

Пример:

import java.io.BufferedReader;

import java.io.IOException;
import java.io.InputStreamReader;

public class GameRunner {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s;
        while (true) {
            s = reader.readLine();
            if (s.equals("qwe") || s.equals("rty") || s.equals("ttt")) {
                break;
            }
        }

        System.out.println(s);
    }
}
→ Ссылка
Автор решения: Tunix

решил так: BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String s;

    while (true) {
        s = reader.readLine();
        if (s.equals("Камень") || s.equals("Ножницы") || s.equals("Бумага")) {
            break;
        }
    }
    return s;
}
→ Ссылка