2017-12-03 15 views
-1

私はアンドロイドでanagrammアプリを作っています。私はいくつかの問題を抱えています。たとえば、テキスト "A"、 "B"、 "C"のボタンがあります。私のコードは文字列 "ABC"を生成し、私のans [i] = "ABC"を生成します。しかし、私はそれらを比較すると、私は偽を返す。ヘルプpls。Androidで文字列を正しく比較する方法は?

のコード例がありますが、私が持っている問題で

ans[i].equals("ABC");

またはに等しいとあなたは、文字列値を比較する必要が

if (word == "ERATO") Toast.makeText(this, ans.get(0), Toast.LENGTH_SHORT).show();

public class MainActivity extends AppCompatActivity { 
public List<Button> btns; 
public List<String> ans; 
String word = ""; 
String checkStr; 
EditText text; 
private static final int[] btn_id = { 
     R.id.btn1, 
     R.id.btn2, 
     R.id.btn3, 
     R.id.btn4, 
     R.id.btn5, 
     R.id.btn6, 
     R.id.btn7, 
     R.id.btn8 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    btns = new ArrayList<Button>(); 
    ans = new ArrayList<String>(); 
    text = findViewById(R.id.txt); 
    text.setEnabled(false); 
    fillAnswers(); 

    for (int i = 0; i < btn_id.length; i++){ 
     Button b = findViewById(btn_id[i]); 
     btns.add(b); 
    } 
} 

public void fillAnswers(){ 
    ans.add("ERATO"); 
    ans.add("MARI"); 
    ans.add("AIR"); 
} 

public void onClick(View v){ 
    Button b = (Button)v; 
    char str = b.getText().charAt(0); 
    addToString(str); 
    text.setText(word); 
    b.setEnabled(false); 
    // Toast.makeText(this, word, Toast.LENGTH_SHORT).show(); 
} 

public void okClick(View v){ 

    //Toast.makeText(this, word, Toast.LENGTH_SHORT).show(); 
    if (word == "ERATO") Toast.makeText(this, ans.get(0), Toast.LENGTH_SHORT).show(); 
    /* for (int i = 0; i < 3; i++){ 
     // Toast.makeText(this, word, Toast.LENGTH_SHORT).show(); 

     if (checkStr == ans.get(i)){ 
      Toast.makeText(this, word, Toast.LENGTH_SHORT).show(); 
     } 
    }*/ 

    word = ""; 
    text.setText(word); 
    for (int i = 0; i < btn_id.length; i++){ 
     Button b = findViewById(btn_id[i]); 
     b.setEnabled(true); 
    } 
} 

public void addToString(char s){ 
    word += s; 
} 

}

答えて

0
if (word.equals("ERATO")) Toast.makeText(this, ans.get(0), Toast.LENGTH_SHORT).show(); 
+0

ありがとうございます。しかし、なぜ "=="はうまくいかないのですか? – Ordec

+0

これは、.equalsが文字列の値を比較し、==が2つのオブジェクトが同じ値をメモリ内に持っているかどうかをチェックするためです。 .equalsIgnoreCase()のようなString関数を見てください。 – Harshita

+0

@Ordecもし私があなたを助けてくれたら、私の答えをアップアップして、左側に正しいとチェックしてください – mac229

関連する問題