Java Scanner の問題に関連する 7 つのスレッドを読みましたが、私の問題に対する答えはありませんでした。
コンソールからユーザー入力を取得しようとしています。Scanner オブジェクト (入力) を作成し、ユーザーのコマンドを「command」という文字列に格納しようとします。次に、元の runGame 関数に「コマンド」を渡します。スキャナ/コマンドは書き込みテキストを読み取っているようです。(「d」と入力してコマンドの内容を出力すると、「d」が出力されます。)
しかし、文字列を返して nextMove に格納すると、壊れてしまいます。たとえば、'd' と入力しますが、(nextMove == 'd') if ステートメントが呼び出されません。実際、何を入力しても、else ステートメントだけが入力されます。
私は何を間違っていますか?どうすれば修正できますか
元の関数コードは次のとおりです。
public void runGame() {
drawWindow();
while(true) {
String nextMove = takeInput();
if(nextMove == "d")
System.out.print("WORRRRDDD d");
else if(nextMove == "w")
System.out.print("WORRRRDDD w ");
else {
drawWindow();
System.out.print("YOU GOT ELSED");
continue;
}
}
}
takeInput/Scanner 関数のコードは次のとおりです。
public String takeInput() {
String command;
input = new Scanner(System.in); // "input" is the Scanner object used for all input.
try{
System.out.print("Enter command (d, w, stop, restart, exit): ");
command = input.next();
} catch(Exception e) {
System.out.println("You entered an invalid command.");
return null;
}
System.out.println("\n RETURNING COMMAND" + command + " \n");
return command;
}
あなたが手伝っている間 (検索するつもりですが、見つからない場合) スキャナー オブジェクトの空白の入力を認識する最良の方法は何ですか?
また、コンソールでのユーザー入力について心配する必要がある他の例外/キャッチはありますか?