-2

重複の可能性:
Java で文字列を比較するにはどうすればよいですか?

ifsendMessageの最初の (他のものと同じ) が真にならない理由がわかりません。レシーバー文字列は、まさに真であるべきものです?!

これを実行してアリスに送信を押すと、3 つのトーストが表示されます。

  1. Alice に送信 (=受信者の値)
  2. [空白のトースト] (= phoneNumber の値)
  3. メッセージを選択する必要があります (=気にしないでください!)

    public void onSend(View src){
    Button b = (Button)src;
    
    sendMessage(b.getText().toString());
    
    }
    
    public void sendMessage(String reciever){
    
    String phoneNumber = "";
    Toast.makeText(this, reciever, Toast.LENGTH_LONG).show();
    
    if (reciever == "Send to Alice"){
        phoneNumber = "01230340645";
        Toast.makeText(this, "hej", Toast.LENGTH_LONG).show();
    }
    
    else if (reciever == "Send to Bob"){
        phoneNumber = "020312039";
    }
    
    else if (reciever == "Send to John"){
        phoneNumber = "0102308013";
    }
    
    Toast.makeText(this, phoneNumber, Toast.LENGTH_LONG).show();
    
    if (_message == ""){
        Toast.makeText(this, "You have to choose a message!", Toast.LENGTH_LONG).show();
    } else {
        Intent sms = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:" + phoneNumber));
        sms.putExtra("sms_body", _message);
        startActivity(sms);
        _message = "";
    }
    
     }
    
4

3 に答える 3

11

==Java で文字列を比較するために使用しないでください。equals メソッドを使用します。

if (reciever.equals("Send to Alice"))...

演算子は==、参照が指すオブジェクトではなく、参照が等しいかどうかを比較します。

于 2013-01-23T13:32:24.560 に答える
5

これを試して....

から:

if (reciever == "Send to Alice")

に:

if (receiver.equals("Send to Alice"))
于 2013-01-23T13:33:35.150 に答える
1
if (receiver.equals("Send to Alice"))

その「Send to Alice」が大文字と小文字を区別してチェックされる場合、および

if (receiver.equalsIgnoreCase("Send to Alice"))

その「アリスに送信」が大文字と小文字を区別せずにチェックされる場合

==整数(類似)のみをチェックし、文字列.equalsには使用する必要があるため

于 2013-01-23T13:42:26.890 に答える