2017-09-24 6 views
1

実践的な目的のために、私はbraintrainerアプリケーションを構築します。あなたは正しいものだと思う番号をクリックすることができますAndroidスタジオ:3桁の数字はカウントに加算されません++

enter image description here

:それはこのようになります。 Foreachは、右上のカウンターが1つ増える番号をクリックします。正しい番号をクリックすると、隣のカウンターも1つ増えます。正しい答えが2桁から作られている場合

私の問題はこれです。両方のカウンターが増加します。しかし、正解が3桁であれば。右上のカウンタだけが増加します。一部の値が私にこれらのログ与えるトラッキング:ここ

enter image description here

することは正しい答えが押されているかどうかを確認するコードです:

public void guessFunction(View view){ 
    TextView guessView = (TextView) view; 
    String buttonText = guessView.getText().toString(); 
    Log.i("correctAnswer: ", String.valueOf(correctAnswer)); 
    Log.i("buttonText: ", buttonText); 

    if (buttonText == String.valueOf(correctAnswer)){ 
     correctCount++; 
     TextView correctText = (TextView) findViewById(R.id.correctText); 
     correctText.setText(String.valueOf(correctCount)); 
    } 
    Log.i("count: ", String.valueOf(correctCount)); 


    shuffleFunction(); 
} 

よりcodesamplesが必要な場合は私に知らせてください。

+0

何をしようとしているのかについての情報を追加してください –

+0

アプリの機能に関する詳細な情報や詳細情報が必要ですか? – 2hTu2

+0

アプリ機能が賢明 –

答えて

0
if (buttonText.equals(String.valueOf(correctAnswer)){ ... } 

object == otherObjectを置くことによって、あなたは、彼らが1と(二つの変数によって参照)同じインスタンスかどうか、二つのオブジェクトのアイデンティティについて尋ねます。 object.equals(otherObject)を入力すると、等価について、2つのオブジェクトが特定の点で等しいかどうか(equals()メソッドで実装されているかどうか)を問うことができます。

Javaでは、ほとんどの場合、Stringを文字列クラスのequals()メソッドと比較したいと考えています。あなたのケースでは、2つの別々のオブジェクトを比較していることは明らかです(Stringクラスのstatic valueOfメソッドで2番目のStringを作成したばかりです)。したがってequals()を使用する必要があります。

0

これは間違っています。

if (buttonText == String.valueOf(correctAnswer)) 

Javaの文字列を比較するのに、==を使用しないでください。代わりにequalsを使用してください。

+0

これは動作します!しかし、なぜ '=='が文字列から3桁の数字を読み取ることができないのか分かりません。 – 2hTu2

+0

それは同一性と平等の違いについてです。 OOPでは、オブジェクトを比較する場合、通常、2つの異なるオブジェクトが同じ特性を持つかどうかを確認したい( 'equals')。 2つのオブジェクトが実際に1つの同じインスタンスであるかどうかを確認する場合にのみ、 '=='を使ってそれらを比較します。 Btw、私の答えが最初だった! – kalabalik

関連する問題