web-dev-qa-db-fra.com

Comparer des chaînes en Java

J'essaie de comparer les valeurs de deux boîtes edittext. Ce que je voudrais, c'est juste comparer passw1 = passw2. Comme mon code compare maintenant deux chaînes que j'ai entrées, je ne pouvais pas les comparer.

 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] J'ai commis une erreur plus tôt, car pour obtenir le texte, vous devez utiliser .getText (). ToString ().

Voici un exemple de travail complet:

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

Réponse originale (ne fonctionnera pas en raison de l'absence de toString ())

Essayez d’utiliser .getText () au lieu de .toString ().

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

.toString () retourne une représentation sous forme de chaîne de tout l'objet, ce qui signifie qu'il ne retournera pas le texte que vous avez entré dans le champ (voyez vous-même en ajoutant un Toast qui affichera la sortie de .toString ())

16
mrPjer

L'utilisation de l'opérateur == comparera les références aux chaînes et non à la chaîne elle-même.

Ok, vous devez toString () the Editable. J'ai chargé une partie du code que j'avais avant de traiter de cette situation.

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

if (passwd1Text.equals(passwd2Text))
{
}
34
Andrew T Finnell

Dans la fonction Onclik, remplacez la première ligne par cette ligne, vous obtiendrez un bon résultat.

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

5
DPM

Vous pouvez comparer les valeurs en utilisant equals() de Java:

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

Vous avez besoin à la fois de getText () - qui retourne un Editable et de toString () - pour convertir cela en une chaîne de correspondance . Donc au lieu de: passw1.toString().equalsIgnoreCase("1234")vous avez besoin de passw1.getText().toString().equalsIgnoreCase("1234").

2
Highland Mark

vous pouvez utiliser String.compareTo (String) qui renvoie un entier négatif (<), nul (=) ou positif (>).

Utilisez-le ainsi:

Vous pouvez utiliser String.compareTo (String) qui renvoie un entier négatif (<), nul (=) ou positif (>).

Utilisez-le ainsi:

  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

Essayez d’utiliser d’abord .trim() avant .equals() ou de créer une nouvelle variable String contenant ces éléments.

0
raphaelle

a fait la même chose ici pour montrer "succès" deux fois réponse est une donnée de 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