比较Java中的字符串

M2G*_*2Gd 9 java string android

我试图比较两个edittext框的值.我想要的是比较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();
      }
     }   }); 
Run Code Online (Sandbox Code Playgroud)

And*_*ell 34

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

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

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

if (passwd1Text.equals(passwd2Text))
{
}
Run Code Online (Sandbox Code Playgroud)


mrP*_*jer 17

[编辑]我之前犯了一个错误,因为要获得文本,你需要使用.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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

if( passw1.getText() == passw2.getText() )
#do something
Run Code Online (Sandbox Code Playgroud)

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


DPM*_*DPM 5

在onclik函数中用这一行替换第一行你一定会得到正确的结果.

if(passw1.getText().toString().equalsIgnoreCase("1234")&& passw2.getText().toString().equalsIgnoreCase("1234")){