2011-07-23 5 views
0

このifステートメントが動作していないようです。java ifステートメントエラー

私はJavaで新しいんだけど、私はかなりよくC#とC++を知っているが、私は前にそのようなことを見たことがない:

today=edit[0].substring(0,10); 
if (today == edit[0].substring(0,10)) 
{ 
    pars_prog.addView(name_prog[i]); 
} 

そして、それはIF機能に取得していませんか?

Java(Android)でif文が異なるのですか?

+1

:オペランドのコンパイル時の型は両方stringされていない場合、あなたはまだ、参照比較を取得しますそこにオペレータ。 – emory

+0

これは異なる方法で動作する 'if'ではなく、それはStringオブジェクト(したがって' == ')です。 '.equals()' – Nanne

+0

この宇宙の中で最高のコーダーを作ることができます。 – K6t

答えて

4

を使用する - かどうか、すなわちまったく同じオブジェクトを参照するか、または両方がnullであるかどうかを示します。

この場合、文字列が=と等しいかどうか、つまり文字列が同じ文字列かどうかを判断する必要があります。 equals呼び出しのターゲットが非nullであることをあなたが注意しなければならない

if (today.equals(edit[0].substring(0,10))) 

しかし、一般的にこれを行うか、NullPointerExceptionを得るでしょう:あなたは、そのためのequals方法を使用する必要があります。 ==オペレータがオーバーロードすることができ、stringため過負荷であることを除いて - C#は類似あること

注。私はこれはあなたの質問になりますが、それでも、それは==を使用するには、悪い習慣があるではないことを行う

object text1 = new StringBuilder("hello").ToString(); 
object text2 = new StringBuilder("hello").ToString(); 
Console.WriteLine(text1 == text2); // False 
+0

ありがとう、これはまさに私が探していたものです – MBP

0

は、あなたが入力したことはありませんなぜあなたは参照とのthatsを比較している今...文字列を比較するときにequalsメソッドを使用する必要がある場合は同一性比較であるあなたが==で文字列を比較しようとしている

3

ブロック、 - それをその内容を比較するのではなく、2つが同じインスタンス(JVM内)であるかどうかをチェックします。

代わりにtoday.equals(..)を使用してください。

これは、あなたが日付を扱っているように見えるので、Stringはこれを処理する最良の方法ではありません。 CalendarDate(ビット廃止)か、それは単に参照が等しいかどうかを比較する(文字列やその他の非プリミティブ型かどうか)==ための任意のオブジェクト参照を使用ジョダ時DateTime