【问题标题】:Java error value might have already been assigned可能已经分配了 Java 错误值
【发布时间】:2017-02-07 22:40:26
【问题描述】:

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

     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?
  • 编译器希望它为内部循环中的 k 完成 (mSprintHrs[k])

标签: java android javac


【解决方案1】:

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

for (int i=0; i<6; i++) {
    final int k = i;

一种可能更简洁的解决方法是将循环体提取到带有final 参数的单独方法中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2013-10-09
    • 1970-01-01
    相关资源
    最近更新 更多