可能已分配Java错误值

时间:2017-02-07 22:40:26

标签: java android javac

我想使用下面的代码来设置一个监听器数组

     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

任何解决方法?

1 个答案:

答案 0 :(得分:1)

错误是因为您尝试修改let screenRect:CGRect = UIScreen.main.bounds 变量。如果您需要访问匿名子类中的可变变量,则必须将其复制到final变量:

final

一个可能更简洁的解决方法是将循环体提取到带有for (int i=0; i<6; i++) { final int k = i; 参数的单独方法。