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()
中。您可以相应地进行调整。