Как сделать проверку ввода игрока с различными классами - PullRequest
0 голосов
/ 20 октября 2018

Game.java

public void getLetter() {
    System.out.print("Give a letter: ");
    guessedLetter = ((PlayerHuman) player1).letterGuessing();   
    }   
}

PlayerHuman.java

public char letterGuessing() {
    inputString = scanner.nextLine();
    if(inputString.isEmpty()) {
        //need code here, also check if its only a-z
    }
    inputChar = inputString.toUpperCase().charAt(0);
    return inputChar;
}

У меня есть этот код.В getLetter() он запрашивает письмо, а затем вызывает метод letterGuessing().В методе letterGuessing() необходимо проверить, не является ли ввод не пустым, а перед возвращением буквы только буква в алфавите.

Если это пустая буква или не буква, ей нужно сделать целое getLetter()метод снова.Как попросить новое письмо с этим сисо.

Как мне это сделать?

1 Ответ

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

Вы можете использовать следующую логику:

public char letterGuessing() {
    String inputString;
    while (true) {
        System.out.print("Give a letter: ");
        inputString = scanner.nextLine();
        if (inputString != null && inputString.length() > 0 && Character.isLetter(inputString.charAt(0))) {
            break;
        }
    }

    return inputString.toUpperCase().charAt(0);
}

Здесь while-loop не разбивается до тех пор, пока inputString не является буквой.До этого в if есть дополнительные проверки, чтобы избежать любых NPE.

Кроме того, я переместил строку System.out.print("Give a letter: "); в метод letterGuessing() для лучшего понимания.

Вы можете настроить это соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...