2011-01-15 40 views
9

Tôi đang cố so sánh các giá trị của hai hộp văn bản. Những gì tôi muốn là chỉ cần so sánh passw1 = passw2. Như mã của tôi bây giờ là so sánh hai chuỗi tôi đã nhập như tôi không thể so sánh chúng.So sánh các chuỗi trong Java

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

Trả lời

16

[EDIT] Tôi đã phạm sai lầm trước đó, bởi vì, để có được những văn bản, bạn cần phải sử dụng .getText(). ToString().

Dưới đây là một ví dụ làm việc đầy đủ:

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

câu trả lời gốc (Sẽ không làm việc vì sự thiếu toString())

Hãy thử sử dụng .getText() thay vì ToString().

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

ToString() trả về một String đại diện của toàn bộ đối tượng, có nghĩa là nó sẽ không trả lại văn bản bạn đã nhập trong lĩnh vực này (xem cho chính mình bằng cách thêm một Toast đó sẽ hiển thị đầu ra của ToString ())

+0

tôi đã cố gắng này, nhưng tất cả tôi nhận được là họ không phù hợp ngay cả khi chúng là – M2Gd

+0

Bạn có thể đăng khối mã với getText() và đầu ra của Log.d ("test", passw1.getText()) và Log.d ("test", passw2.getText()) không? – mrPjer

+0

Ngoài ra, bạn có thể thử như sau: if ((passw1.getText()) bằng (passw2.getText())) – mrPjer

32

Sử dụng toán tử == sẽ so sánh các tham chiếu đến các chuỗi không phải là chuỗi.

Ok, bạn phải toString() có thể chỉnh sửa. Tôi đã tải lên một số mã mà tôi đã có trước khi xử lý tình huống này.

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

if (passwd1Text.equals(passwd2Text)) 
{ 
} 
+0

tôi đã thử điều đó và tôi vẫn còn có msg khác đi lên khi chúng phù hợp với – M2Gd

2

Bạn cần cả getText() - trả về một Editable và toString() - để chuyển đổi thành chuỗi để khớp. Vì vậy, thay vì: passw1.toString().equalsIgnoreCase("1234") bạn cần passw1.getText().toString().equalsIgnoreCase("1234").

3

Bạn có thể so sánh các giá trị sử dụng equals() của 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"); 
} 
1

ou có thể sử dụng String.compareTo (String) trả về một số nguyên đó là tiêu cực (<), zero (=) hoặc dương (>).

Sử dụng nó như vậy:

Bạn có thể sử dụng String.compareTo (String) trả về một số nguyên đó là tiêu cực (<), zero (=) hoặc dương (>).

Sử dụng nó như vậy:

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

Cố gắng sử dụng .trim() đầu tiên, trước khi .equals(), hoặc tạo một String var mới có những điều này.

5

Trong chức năng onclik thay thế dòng đầu tiên bằng dòng này u chắc chắn sẽ nhận được kết quả đúng.

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

0

đã làm như vậy ở đây cần thiết để hiển thị "thành công" hai lần phản ứng là dữ liệu từ 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

Đây không phải là câu trả lời đúng cho câu hỏi – poohdedoo

+0

try ** string res = response.toString(). Trim() ** –