【问题标题】:Comparison between textPersonName and textPassword [duplicate]textPersonName 和 textPassword 之间的比较 [重复]
【发布时间】:2013-02-27 01:22:06
【问题描述】:

我的活动是一个简单的登录活动,其中(仅用于测试)如果用户名和密码相等则返回 true,否则返回 false。

但它总是返回 false。

即使我转换toString(); 示例:

String a=(txtUserName.getText().toString() == txtPassword.getText().toString()) ? "equal" : "Nequal";

完整代码:

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_login);
  txtUserName = (EditText) this.findViewById(R.id.txtUname);
  txtPassword = (EditText) this.findViewById(R.id.txtPwd);
  btnLogin = (Button) this.findViewById(R.id.btnLogin);
  btnLogin.setOnClickListener(new OnClickListener() {
    @Override


      public void onClick(View v) {
      Toast.makeText(LoginActivity.this,txtUserName.getText(),Toast.LENGTH_LONG).show();
      Toast.makeText(LoginActivity.this,"Just for separate", Toast.LENGTH_LONG).show();
      Toast.makeText(LoginActivity.this,txtPassword.getText(), Toast.LENGTH_LONG).show();

      String a=(txtUserName.getText() == txtPassword.getText()) ? "equal" : "Nequal";

      Toast.makeText(LoginActivity.this, a, Toast.LENGTH_LONG).show();

    }

  });
}  

【问题讨论】:

  • 你把比较指针的 == 和比较内容的 .equals() 混淆了。

标签: java android string operators


【解决方案1】:

使用

  String a=(txtUserName.getText().toString().equals(txtPassword.getText().toString()))

您所做的方式不是等同于字符串,而是等同于字符串对象。 始终使用 String.equals() 方法进行字符串比较。

Java String.equals versus ==

【讨论】:

  • 我已经尝试过 equals: if(txtUserName.getText().equals(txtPassword.getText())){ Toast.makeText(LoginActivity.this, "equal", Toast.LENGTH_LONG) 。显示(); } else{ Toast.makeText(LoginActivity.this, "Nequal", Toast.LENGTH_LONG).show(); } 并且返回它是相同的“Nequal”
  • String a=("xyz".equals("xyz"))? "equal" : "Nequal"; 我试过这个并且工作正常。确保你得到的值是相等的,如果不是,那么它将返回false
  • 感谢它用 equals 和 toString 解决了;)
【解决方案2】:

比较字符串值,使用String的equals方法;对象引用的 == 运算符比较引用相等性,因为它们是两个不同的对象,所以它总是返回 false。

txtUserName.getText().equals(txtPassword.getText())

【讨论】:

  • 实际上,对于 String 有一些 JRE 魔法,其中装箱可能导致 == 返回 true 的频率比预期的要高。不过,核心答案是正确的——发帖者应该使用 .equals 来比较内容。
猜你喜欢
  • 2013-04-26
  • 1970-01-01
  • 2010-11-19
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多