2017-02-11 35 views
1

我最近爲我的論文開發了一個android wordsearch應用程序,我剛剛在同一時間學習android開發。使用計數器進行計分

我有這種方法名爲checkAns來確定用戶是否選擇了我的wordgrid正確的單詞。這是該方法的代碼:

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

很明顯你的邏輯不正確。或者你的循環週期重複的次數少於你認爲的@Oscar提到的或者你的列表中有一個單詞實例,所以if語句變成真實的。第三種可能性是,當你將你的單詞改爲小寫字母時,它與列表中的字符串不匹配。是一個特定的字符串?如果是,你的列表中有多少實例存在? –

+0

@OscarLundberg它是5,8或10. – Gboy

回答

2

但它增加。將其分配給0並輸出1.

最有可能的問題是在for循環中。它似乎只運行一次迭代,因此isCorrect只會增加一次。

檢查你的Category.size它是什麼值?既然它是用PascalCase命名的,我認爲它是一個類,也許問題是你將它引用爲靜態類而不是對象引用。

嘗試實例化類型Category

Category cat = new Category(); 

像這樣的一個目的。使用該對象來更改類的數據,然後用cat.size

我看到你isCorrect變量沒有問題,檢查它,但我建議你incremention是你關閉循環之前發生的最後一件事,那如果你需要使用它的值,它將實際上代表當前迭代的值。

+0

「Category.size」的值是一個用戶輸入整數。它的值來自一個'RadioButton'由(5,8,10)組成。我的項目中的'Category'是一個'java'類。 – Gboy

0

我終於設法解決了這個錯誤。我只使用parseIntTextView()的字符串值,並在每次用戶找到正確的答案時將其減1。感謝所有的幫助和我的邏輯清除!