-1

これが私のコードです。文字列cmdを出力すると、「print」が出力されますが、それでもifstatemnetは実行されません。これが私のコードです:

public static void main(String[] args) throws InterruptedException {
   String url = "http://xboxfl.co/java/inc/command.txt";
  String cmd = Methods.getContents(url, "UTF-8");
  System.out.println(cmd);
  if(cmd.equalsIgnoreCase("print")){
      System.out.println("it works");
  }
}

うまくいけば、誰かが助けることができます。ありがとう!

4

5 に答える 5

7

試す:

if(cmd.trim().equalsIgnoreCase("print"))
{
    System.out.println("it works");
}

trim()単語の前後のスペースがあるprint場合は、それを削除します。

于 2013-01-05T04:05:17.187 に答える
2

トリミングする必要があります。文字列の前後にスペースまたは改行文字がある可能性があります。

于 2013-01-05T04:06:14.970 に答える
1

以下を使用して、nulPointerExceptionの可能性をトリミングして回避します

if(cmd!=null && cmd.trim().equalsIgnoreCase("print"))
  {
   System.out.println("it works");
  }

編集済みまたは

if(cmd!=null && "print".equalsIgnoreCase(cmd.trim()))
  {
   System.out.println("it works");
  }
于 2013-01-05T04:09:03.080 に答える
1

String.equalsは機能します。

String.equals「機能しない」シンドロームの最も一般的な原因は、文字列の一方に先頭または末尾の空白があり、もう一方にはないことです。問題は、診断トレースプリントの空白文字を見逃しやすいことです。(私は通常、空白をより明確にするためにトレースプリントの文字列値を引用符で囲みます。注意深く見ると、デバッガーも実際の文字を表示します。)

もう1つの、はるかにまれな原因は、比較されている文字列の1つに、他の文字列の対応する文字のように見える文字が含まれているが、実際には含まれていないことです。たとえば、Unicodeギリシャ文字とキリル文字のコードページには、ラテン文字のように見えますが、実際には異なる文字が含まれています。Unicodeは2つの異なる表現方法をサポートしているため、アクセント付き文字でも同様の問題が発生する可能性があります。

于 2013-01-05T04:44:56.917 に答える
0

cmd変数に空白があるかどうかを確認しましたか?

于 2013-01-05T04:06:26.620 に答える