webentwicklung-frage-antwort-db.com.de

Strings in Java vergleichen

Ich versuche die Werte zweier Edittext-Boxen zu vergleichen. Was ich möchte, ist, einfach passw1 = passw2 zu vergleichen. Da mein Code jetzt zwei Zeichenketten vergleicht, habe ich sie eingegeben, da ich sie nicht vergleichen konnte.

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

[EDIT] Ich habe zuvor einen Fehler gemacht, da Sie zum Abrufen des Textes .getText (). ToString () verwenden müssen.

Hier ist ein vollständiges Arbeitsbeispiel:

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

Ursprüngliche Antwort (Funktioniert nicht, weil toString () fehlt)

Versuchen Sie es mit .getText () anstelle von .toString ().

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

.toString () gibt eine String-Darstellung des gesamten Objekts zurück. Dies bedeutet, dass der von Ihnen in das Feld eingegebene Text nicht zurückgegeben wird.

16
mrPjer

Mit dem Operator == werden die Verweise auf die Zeichenfolgen und nicht auf die Zeichenfolge selbst verglichen.

Ok, du musst toString () die Editierbare. Ich habe etwas von dem Code geladen, den ich zuvor hatte, der sich mit dieser Situation befasste.

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

if (passwd1Text.equals(passwd2Text))
{
}
34

In der onclik-Funktion ersetzen Sie die erste Zeile durch diese Zeile, und Sie erhalten auf jeden Fall das richtige Ergebnis.

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

5
DPM

Sie können die Werte mit equals() von Java vergleichen:

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");
}
3
Ranajit mishra

Sie benötigen sowohl getText () - was ein Editable zurückgibt, als auch toString () -, um dies in einen String umzuwandeln, damit es zusammenpasst . Statt also passw1.toString().equalsIgnoreCase("1234") brauchen Sie passw1.getText().toString().equalsIgnoreCase("1234").

2
Highland Mark

sie können String.compareTo (String) verwenden, das eine ganze Zahl zurückgibt, die negativ (<), null (=) oder positiv (>) ist.

Verwenden Sie es so:

Sie können String.compareTo (String) verwenden, das eine ganze Zahl zurückgibt, die negativ (<), null (=) oder positiv (>) ist.

Verwenden Sie es so:

  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
}    
1
Sathish

Versuchen Sie, zuerst .trim() vor .equals() zu verwenden, oder erstellen Sie eine neue String-Variable mit diesen Dingen.

0
raphaelle

tat das gleiche hier, um "Erfolg" zweimal anzuzeigen. Die Antwort ist die Daten von 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();
    }
0
A_rmas