「この文字列を比較するにはどうすればよいですか」という質問には何百万という答えがありますが、私は問題を解決するために多くのことを研究していますが、 ...文字列の比較 - Java
ネットワーク上のチャットサーバーとクライアントをjavaで作成しています。これはDatagramSockets
を使用してudp上で実行されます(tcp上のストリームははるかに意味があります)。ユーザーがexit
と入力すると、チャットプログラムを終了する方法があります。ユーザの入力を得るために、getter.getMessage
のgetMessage
というメソッドで宣言したScanner
を使用しています。ここで私は今働いているコードは次のとおりです。
getter.getMessage();
String pTest = getter.smessage;
if(pTest.equals("exit")) {
System.out.println("System going offline");
getter.isOn = false;
}
これは、ユーザーの入力が終了した場合でも、私のwhileループの周りに毎回無視します。
if(getter.message.toLowerCase().Equals("exit") {
//blah
}
私はもともとString pTest
にgetter.messageを入れないでしようとしたが、それだけでは動作したくない:私も試してみました。私はここで間違って何をしていますか?あなたは"exit"
を期待しているときに(trim()
を呼び出した後10)11個の文字を受けていることをコメントで述べた
if ("exit".equalsIgnoreCase(getter.message.trim())) {
. . .
}
EDIT
:
これをデバッグする必要があります。 getMessage()を呼び出す前と後にgetter.smessageを出力して、実際に動作するかどうかを確認します。たぶん、あなたがトリミングしたい後続のwithspaceがありますか? – Thilo
多分smessageに改行が含まれていますか?その場合は "exit \ n" .equals( "exit") 'はfalseを返します。 –
また、ヌルポインタ例外を避けるためには、" exit ".equals(pTest)'を実行するのが最善です。 –