Java で作成したクラスがあり、メソッドの 1 つは getCommand() です。このメソッドの目的は、文字列を読み取り、ユーザーが入力したものが許容可能なコマンドと一致するかどうかを確認することです。
これは私が最初に書いた方法です:
public char getCommand(){
System.out.println("Input command: ");
command = input.nextLine();
while(command.length() != 1){
System.out.println("Please re-enter input as one character: ");
command = input.nextLine();
}
while( command.substring(0) != "e" ||
command.substring(0) != "c" ||
command.substring(0) != "s" ||
command.substring(0) != "r" ||
command.substring(0) != "l" ||
command.substring(0) != "u" ||
command.substring(0) != "d" ||
command.substring(0) != "k" ||
command.substring(0) != "f" ||
command.substring(0) != "t" ||
command.substring(0) != "p" ||
command.substring(0) != "m" ||
command.substring(0) != "q"){
System.out.println("Please enter a valid character: ");
command = input.nextLine();
}
fCommand = command.charAt(0);
return fCommand;
}
さて、これの問題は、OR 演算子を使用しているため、入力した文字が常にそれらのいずれかと等しくないため、そのループをエスケープしないことです。AND演算子に変更してみましたが、同じ問題です。これらの特定の文字のみを受け入れる最良の方法は何でしょうか? とても有難い。