2017-02-11 5 views
1

私は最近、私の論文のためのアンドロイドワードサーチアプリを開発しています。私は同時にアンドロイド開発を学んでいます。スコアリング用のカウンターを使用

checkAnsという名前のメソッドを使用して、ユーザーが自分のワードグリッドで正しい単語を選択したかどうかを判断します。これは、メソッドのコードです:

private boolean checkAns(TextView uTxt, List list) { 

    final LinearLayout wordList = (LinearLayout) findViewById(R.id.wordL); 
    String word = uTxt.getText().toString().toLowerCase(); 
    int isCorrect = 0; // <====== IT DOESN'T INCREMENT! HELP! 

    for(int i = 0; i < Category.size ; i ++) { 
     if (word.equals(list.get(i))){ 
      isCorrect++; 
      TextView tv = (TextView) wordList.findViewById (i); 
      tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 
      Log.e("OutPut:", String.valueOf(isCorrect)); 
      return true; 
     } 

    } 

は今ここに私の問題はisCorrect変数です。ユーザーが選択した正しい単語の数を決定する必要があります。しかし、それは増加しません。私はそれがインクリメントかどうちょうど見にLogを置くが、それは常に言う:

E /出力:: 1

質問:私はここで何をすべき?私の論理に何か間違っていますか?

どのようなヘルプ、コメント、答えも、非常に感謝しています。

TIA!

+0

Category.sizeの値は何ですか? –

+1

あなたのロジックが正しくないことは明らかです。あなたのループサイクルは、@オスカーが言ったように思ったよりも少なく繰り返されるか、あなたのリストに1つの単語のインスタンスしかないので、if文は一度真となります。 3番目の可能性は、単語を小文字に変更すると、リスト内の文字列と一致しないことです。単語は特定の文字列ですか?はいの場合、あなたのリストにはどれくらいのインスタンスが存在しますか? –

+0

@OscarLundbergそれは5,8、または10です。 – Gboy

答えて

2

しかし、増分します。 0に割り当てて1を出力します。

おそらく問題はforループにあります。 1回の反復しか実行されないように見えるので、isCorrectは1回だけ増分されます。

Category.sizeどのような値ですか? PascalCaseの名前はクラスだと仮定しているので、オブジェクト参照ではなく静的クラスとして参照している可能性があります。そのよう

Category cat = new Category(); 

タイプCategoryのオブジェクトをインスタンス化

してみてください。そのオブジェクトを使用してクラス内のデータを変更して確認してください。cat.size

isCorrect変数に問題はありませんが、ループを閉じる前に最後に増分があることをお勧めします。あなたがその値を使用する必要がある場合、実際には現在の反復の値を表します。

+0

'Category.size'の値はユーザ入力整数です。 ITSの値は(RadioButton)から来て、(5,8,10)で構成されます。私のプロジェクトの 'Category'は' java'クラスです。 – Gboy

0

最終的にエラーを修正することができました。私はちょうどparseIntTextView()の文字列の値を使用し、ユーザーが正しい答えを見つけるたびに1を引いています。私の論理のすべての助けとクリアランスのおかげで!

関連する問題