比较Java中的string

我试图比较两个edittext框的值。 我想只是比较passw1 = passw2。 因为我的代码现在正在比较我input的两个string,因为我无法比较它们。

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(); } } }); 

Solutions Collecting From Web of "比较Java中的string"

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

原来的答案(不会因为缺lesstoString())而工作

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

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

.toString()返回整个对象的string表示,这意味着它不会返回你在字段中input的文本(通过添加一个Toast来显示.toString()的输出)。

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

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

 String passwd1Text = passw1.getText().toString(); String passwd2Text = passw2.getText().toString(); if (passwd1Text.equals(passwd2Text)) { } 

在onclik函数取代第一行这一行你一定会得到正确的结果。

if(passw1.getText()。toString()。equalsIgnoreCase(“1234”)&& passw2.getText()。toString()。equalsIgnoreCase(“1234”)){

您可以使用Java的equals()来比较这些值:

 public void onClick(View v) { // TODO Auto-generated method stub s1=text1.getText().toString(); s2=text2.getText().toString(); if(s1.equals(s2)) Show.setText("Are Equal"); else Show.setText("Not Equal"); } 

您需要同时返回一个Editable和toString()的getText()将其转换为string进行匹配。 所以,而不是: passw1.toString().equalsIgnoreCase("1234")您需要passw1.getText().toString().equalsIgnoreCase("1234")

您可以使用返回负数(<),零(=)或正数(>)的整数的String.compareTo(String)。

这样使用它:

您可以使用返回负数(<),零(=)或正数(>)的整数的String.compareTo(String )。

这样使用它:

  String a="myWord"; if(a.compareTo(another_string) <0){ //a is strictly < to another_string } else if (a.compareTo(another_string) == 0){ //a equals to another_string } else{ // a is strictly > than another_string } 

尝试在.trim()之前先使用.equals() ,或者创build一个具有这些东西的新的String var。

在这里做同样需要显示“成功”两次响应是来自PHP的数据

  String res=response.toString().trim; Toast.makeText(sign_in.this,res,Toast.LENGTH_SHORT).show(); if ( res.compareTo("success")==0){ Toast.makeText(this,res,Toast.LENGTH_SHORT).show(); }