Сравнивая символы в Java? - PullRequest
0 голосов
/ 11 октября 2018

Я очень плохо знаком с кодом и сталкиваюсь с проблемой, когда пытаюсь создать оператор if / else со сравнением символов.В коде, который я пытаюсь написать, пользователь «рискует» тем, считают ли они, что бросок костей будет выше 7, ниже 7 или ровно 7. Я прикрепил код, который написал для метода, который выбираетих предположение.Когда я ввожу 'h', 'H', 'l' или 'L', я получаю сообщение об ошибке, но когда я ввожу 'S' или 's', метод работает нормально.Есть идеи почему?Заранее спасибо!

    private static char getHighLow(Scanner inScanner) {
    System.our.print("High, low or sevens (H/L/S): ");
    String str = in.Scanner.nextLine();
    char highLow = str.charAt(0);
    char highOne = 'h'; char highTwo = 'H'; char lowOne = 'l'; char lowTwo = 'L'; char sevenOne = 's'; char sevenTwo = 'S';
    if ((highLow == highOne) | (highLow == highTwo)) {
        highLow = 'h';
    }  
    if ((highLow == lowOne) | (highLow == lowTwo)) {
        highLow = 'l';
    if ((highLow == sevenOne) | (highLow == sevenTwo)) {
        highLow = 's';
    }
    else {
        System.out.println("ERROR- enter h, l, or s");
        System.out.print("High, low, or sevens (H/L/S): ");
        str = in.Scanner.nextLine();
        highLow = str.charAt(0);
    }
    return highLow;
    }

1 Ответ

0 голосов
/ 11 октября 2018

Вам необходимо правильно разместить блок else.Лучшее использование else if:

    if ((highLow == highOne) | (highLow == highTwo)) {
        highLow = 'h';
    } else if ((highLow == lowOne) | (highLow == lowTwo)) {
        highLow = 'l';
    } else if ((highLow == sevenOne) | (highLow == sevenTwo)) {
        highLow = 's';
    } else {
        System.out.println("ERROR- enter h, l, or s");
        System.out.print("High, low, or sevens (H/L/S): ");
        str = inScanner.nextLine();
        highLow = str.charAt(0);
    }

Вы также можете использовать корпус переключателя для лучшей читаемости.

...