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()方法。就像用那个syso索要一封新信一样。

我应该怎么做?

最佳答案

您可以使用以下逻辑:

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()中。

您可以相应地进行调整。

10-06 15:33