-1

重複の可能性:
==を使用するステートメントが予期しない結果をもたらす場合

私は、コードで設定した時間とシステムのリアルタイムが等しい場合に何かを実行することを想定したJavaコードに取り組んでいます。時間が一致しない場合は、完全に無視されます。今、私は正しく時間を得ることができますが、何らかの理由で、ifステートメントはそうである場合でも等しくないと言っています。私が見逃している、または間違っていることはありますか?

Calendar now = new GregorianCalendar();
String am_pm;     
int hour = now.get(Calendar.HOUR);
int minute = now.get(Calendar.MINUTE);
if (now.get(Calendar.AM_PM) == 0){
    am_pm = "AM";  
}
else{
    am_pm = "PM";
}
String time = hour + ":" + minute + " " + am_pm;        
String Scan_hour = "2:45 PM";       
System.out.println(time + "--" + Scan_hour);    
if (time == Scan_hour){
    System.out.println("Time matchs");
}
else{
    System.out.println("Time Doesn't Match");
}
4

1 に答える 1

1
if (time == Scan_hour){

する必要があります

if (time.equals(Scan_hour)){

equals()代わりに文字列比較を使用する必要があります(リテラル==の場合を除く)。String

==参照が等しいかどうかをチェックします(両方の参照が同じオブジェクトを指しているかどうか)。equals()コンテンツの同等性をチェックします。

于 2012-11-15T19:53:39.990 に答える