游戏.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()
方法。就像向该系统索取一封新信一样。
我应该怎么做?
最佳答案
您可以使用以下逻辑:
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()
中,以便更好地理解。
您可以相应地进行调整。
关于java - 如何使用不同的类进行玩家输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52909151/