Java 可能已经分配了错误值
Java error value might have already been assigned
我想使用下面的代码来设置一个监听器数组
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
参数的单独方法。
我想使用下面的代码来设置一个监听器数组
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
参数的单独方法。