Сравнение строк в Java - PullRequest
       8

Сравнение строк в Java

9 голосов
/ 15 января 2011

Я пытаюсь сравнить значения двух полей редактирования текста.Я хотел бы просто сравнить 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();
      }
     }   }); 

Ответы [ 8 ]

34 голосов
/ 15 января 2011

Используя оператор ==, вы будете сравнивать ссылки на строки, а не на сами строки.

Хорошо, вам нужно toString () Editable.Я загрузил часть кода, который у меня был до этого, для решения этой ситуации.

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

if (passwd1Text.equals(passwd2Text))
{
}
16 голосов
/ 15 января 2011

[EDIT] Ранее я допустил ошибку, потому что для получения текста необходимо использовать .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 () возвращает строковое представление всего объекта, то есть оно не будет возвращать текст, введенный вами в поле (убедитесь сами, добавив Toast, который покажет выходные данные .toString ())

5 голосов
/ 23 августа 2013

В функции onclik замените первую строку этой строкой, и вы обязательно получите правильный результат.

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

3 голосов
/ 20 декабря 2011

Вы можете сравнить значения, используя equals() 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");
}
2 голосов
/ 15 января 2011

Вам нужно оба getText () - который возвращает Editable и toString () - чтобы преобразовать это в строку для соответствия Так что вместо: passw1.toString().equalsIgnoreCase("1234") вам нужно passw1.getText().toString().equalsIgnoreCase("1234").

1 голос
/ 13 мая 2013

Вы можете использовать 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
}    
0 голосов
/ 06 января 2014

сделал то же самое здесь, чтобы показать «успех» дважды ответом являются данные из 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 голосов
/ 23 августа 2013

Попробуйте сначала использовать .trim(), перед .equals(), или создайте новый String var, содержащий эти вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...