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索要一封新信。
我应该怎么做?
答案 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()
中,以提高理解能力。
您可以进行相应的调整。