我想使用下面的代码来设置一个监听器数组
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
任何解决方法?
答案 0 :(得分:1)
错误是因为您尝试修改let screenRect:CGRect = UIScreen.main.bounds
变量。如果您需要访问匿名子类中的可变变量,则必须将其复制到final
变量:
final
一个可能更简洁的解决方法是将循环体提取到带有for (int i=0; i<6; i++) {
final int k = i;
参数的单独方法。