我想使用下面的代码来设置监听器数组
public void setListeners() {
final int k ;
for (k=0; k<6; k++) {
mNumberView[k].addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mSprintHrs[k] = calcSprint(0, s);
String mSH = String.format("%.1f", mSprintHrs[k]);
mSprintView[k].setText(mSH);
calcTotal();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
我在 for 语句中的 k++ 上遇到编译器错误
Value k might already been assigned to
有什么解决办法吗?
最佳答案
该错误是因为您尝试修改 final
变量。如果您需要访问匿名子类中的可变变量,则必须将其复制到 final
变量:
for (int i=0; i<6; i++) {
final int k = i;
一个可能更简洁的解决方法是将循环体提取到带有 final
参数的单独方法中。
关于Java 错误值可能已被分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42101374/