在 Java 中比较字符串

新手上路,请多包涵

我试图比较两个编辑文本框的值。我想要的是比较 passw1 = passw2。由于我的代码现在正在比较我输入的两个字符串,因为我无法比较它们。

  final EditText passw1= (EditText) findViewById(R.id.passw1);
 final EditText passw2= (EditText) findViewById(R.id.passw2);
 Button buttoks = (Button) findViewById(R.id.Ok);
      buttoks.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {

     if (passw1.toString().equalsIgnoreCase("1234") && passw2.toString().equalsIgnoreCase("1234")){
      Toast.makeText(getApplication(),"Username and password match", Toast.LENGTH_SHORT).show();
      }
    else {
        Toast.makeText(getApplication(),"Username and password doesn't match", Toast.LENGTH_SHORT).show();
      }
     }   });

原文由 M2Gd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 538
2 个回答

[编辑] 我之前犯了一个错误,因为要获取文本,您需要使用 .getText().toString()。

这是一个完整的工作示例:

 package com.psegina.passwordTest01;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class Main extends Activity implements OnClickListener {
    LinearLayout l;
    EditText user;
    EditText pwd;
    Button btn;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        l = new LinearLayout(this);
        user = new EditText(this);
        pwd = new EditText(this);
        btn = new Button(this);

        l.addView(user);
        l.addView(pwd);
        l.addView(btn);
        btn.setOnClickListener(this);

        setContentView(l);
    }

    public void onClick(View v){
        String u = user.getText().toString();
        String p = pwd.getText().toString();
        if( u.equals( p ) )
            Toast.makeText(getApplicationContext(), "Matches", Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(getApplicationContext(), user.getText()+" != "+pwd.getText(), Toast.LENGTH_SHORT).show();
    }
}

原始答案(由于缺少 toString() 而无法工作)

尝试使用 .getText() 而不是 .toString()。

 if( passw1.getText() == passw2.getText() )
#do something

.toString() 返回整个对象的字符串表示形式,这意味着它不会返回您在字段中输入的文本(通过添加将显示 .toString() 输出的 Toast 自己查看)

原文由 mrPjer 发布,翻译遵循 CC BY-SA 2.5 许可协议

使用 == 运算符将比较对字符串的引用而不是字符串本身。

好的,你必须 toString() 可编辑。我加载了一些我之前处理这种情况的代码。

 String passwd1Text = passw1.getText().toString();
String passwd2Text = passw2.getText().toString();

if (passwd1Text.equals(passwd2Text))
{
}

原文由 Andrew T Finnell 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题