Android Studio中的分数计数器错误

时间:2016-10-12 15:49:12

标签: java android android-studio

在我所拥有的计时器的onFinish方法中,如果用户的输入等于随机数(LoadG1),我希望用户将一个点添加到他们的分数中。 IDE希望我使用数组并得分到最终。我遵循其建议去除错误但未能实现我的目标。我花时间尝试以不同的方式对其进行编码(例如:使用parseInt和==)但收到相同的输出。我得不到我所期望的,而是收到“得分:[l @ fea28db”。

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,但输出没有差异。我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果score是一个数组,您可能需要取消引用它,现在看起来正在打印数组的toString(),这不是您实际需要的值。

尝试改为result.setText("Score: " + score[0]);

IDE可能建议使用最终数组,因为您将局部变量传递给匿名内部类,但希望更改它的值并稍后跟踪它。在这里找到更多关于这种模式的信息:Why are only final variables accessible in anonymous class?(Ivan Dubrov的回答特别相关)。