2016-10-12 10 views
1

在計時器的onFinish方法中,我希望用戶在其輸入等於隨機數(LoadG1)時將其分數添加到他們的分數中。 IDE希望我使用數組並最終得分。我遵循其建議來消除錯誤,但未能實現我的目標。我花了很多時間嘗試以不同的方式對其進行編碼(例如:使用parseInt和==),但收到相同的輸出。我沒有得到我期望的,而是得到「分數:[l @ fea28db」。Android Studio中的計分計數器錯誤

public void onFinish() { 
        number.setVisibility(View.GONE); 
        final TextView prompt = (TextView) findViewById(R.id.prompt); 
        prompt.setText(" Enter the number"); 
        final EditText input = (EditText) findViewById(R.id.enterAnswer); 
        input.setVisibility(View.VISIBLE); 
        input.setOnKeyListener(new View.OnKeyListener() { 
         @Override 
         public boolean onKey(View v, int keyCode, KeyEvent event) { 
         if (event.getAction() == KeyEvent.ACTION_DOWN){ 
          switch (keyCode){ 
           case KeyEvent.KEYCODE_ENTER: 
            Editable answer = input.getText(); 
            input.setVisibility(View.GONE); 
            prompt.setVisibility(View.GONE); 
            if (answer.equals(loadG1)){ 
             score[0]++; 
            } 
            return true; 
           default: 
            break; 
          } 
         } 
          return false; 
         } 
        }); 
       } 

這裏就是我輸出的評分:

public void onFinish() { 
        TextView result = (TextView) findViewById(R.id.outcome); 
        result.setText("Score: "+ score); 
        TextView prompt = (TextView) findViewById(R.id.prompt); 
        prompt.setVisibility(View.GONE); 
       } 

我也試着做score=score+1score+=1,在輸出沒有差異。我非常感謝任何幫助。

回答

0

如果score是一個數組,你可能需要取消引用它,看起來像現在你正在打印一個數組的toString(),這不是你實際尋找的值。

改爲嘗試做result.setText("Score: " + score[0]);

IDE可能會建議使用最終數組,因爲您將局部變量傳遞給匿名內部類,但想要更改它的值並稍後進行跟蹤。在這裏發現更多關於這種模式:Why are only final variables accessible in anonymous class?(伊凡杜布羅夫的答案是特別相關的)。

+0

這有幫助,我不得不使用parseInt(String.valueof)和==來實現分數。實質上,它們都必須轉換爲整數才能添加點。你最後把陣列放回去的建議擺脫了奇怪的輸出錯誤,並給了我一個0.謝謝你的迴應。 – User44