Przeciwieństwo equals

0

Witam
Nie do końca wiem jak zrobić przeciwieństwo equals. Próbowałem użyć ! , ale program nie działa tak jak chciałem. Podaje kod, a następnie tłumacze o co konkretnie mi chodzi:

String[] studentsAnswers = new String[20];
        Scanner input = new Scanner(System.in);
        for (int index = 0; index < 20; index++) {
            System.out.println("Podaj odpowiedz nr." +
                    (index + 1) + ":");
            studentsAnswers[index] = input.nextLine().toUpperCase();
            while ((!"A".equals(studentsAnswers[index])) ||
                    (!"B".equals(studentsAnswers[index]))) {
                System.out.println("Niepoprawne dane. Wprowadz ponownie:");
                studentsAnswers[index] = input.nextLine().toUpperCase();
            }
        }

chciałbym, żeby instrukcja studentsAnswers[index] = input.nextLine().toUpperCase(); została wykonana ponownie jeśli odpowiedz wprowadzona przez użytkownika była inna niż "A" lub "B".

6

Podstawowe prawa logiki się kłaniają. Jeśli x != y to (x != z) || (y != z) zawsze da true (o ile ktoś nie popsuł equalsa).

Jak chcesz zanegować alternatywę (koniunkcję, etc) to polecam najpierw zajrzeć w https://pl.wikipedia.org/wiki/Prawa_De_Morgana

3

Zamień || na && i chyba powinno zadziałać :P Bo teraz jak wpisywałeś A, B lub C to zawsze wchodziło ci do pętli while, a to musi być różne od a i ob b.

0
Madaoo napisał(a):

Zamień || na && i chyba powinno zadziałać :P Bo teraz jak wpisywałeś A, B lub C to zawsze wchodziło ci do pętli while, a to musi być różne od a i ob b.

Dzięki, działa! Widzę, że nie kumam totalnie operatorów logicznych. Uczy mnie to pokory. Myślałem, że już coś tam potrafię z tego całego programowania, a tu się okazuje, że wracamy do podstaw....... Jeszcze raz wielkie dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1