在我所拥有的计时器的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+1
和score+=1
,但输出没有差异。我非常感谢任何帮助。
答案 0 :(得分:0)
如果score
是一个数组,您可能需要取消引用它,现在看起来正在打印数组的toString()
,这不是您实际需要的值。
尝试改为result.setText("Score: " + score[0]);
。
IDE可能建议使用最终数组,因为您将局部变量传递给匿名内部类,但希望更改它的值并稍后跟踪它。在这里找到更多关于这种模式的信息:Why are only final variables accessible in anonymous class?(Ivan Dubrov的回答特别相关)。