-2

可能重复:
如何比较 Java 中的字符串?

if我不明白为什么sendMessage中的第一个(其他相同)永远不会成真。接收者字符串正是它应该是真实的?!

当我运行它并按发送给 Alice时,我得到 3 个 Toast:

  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 中的字符串。使用等号方法。

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"))

如果要检查“发送给 Alice”是否区分大小写,并且

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

如果要在不区分大小写的情况下检查“Send to Alice”,并且

因为==将只检查整数(相似)并且.equals应该使用字符串

于 2013-01-23T13:42:26.890 回答