Java 错误值可能已被分配

标签 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

有什么解决办法吗?

最佳答案

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

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

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

关于Java 错误值可能已被分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42101374/

相关文章:

java - JComboBox getSelectedIndex 不工作两次?

java - ProGuard 导致应用程序延迟

java - Html 文档中的多行

java - 我是否可以控制 jsvc stderr 输出中显示的 java 日志的日志格式?

java - android gradle如何将构建版本传递给android mk

android - 如何将 LayerDrawable 转换为位图?

android - 从 android 的 obb 文件夹加载 .so native 库

hadoop - 无法为Hadoop示例: package org.apache.hadoop.mapreduce does not exist编译MaxTemperatureMapper.java

java - 为什么我们需要让javac来编译多个源文件?

Java 命令有效,但 javac 命令无效