如何使用不同的类别进行玩家输入验证

时间:2018-10-20 19:04:43

标签: java validation

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索要一封新信。

我应该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用以下逻辑:

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()中,以提高理解能力。

您可以进行相应的调整。