What to do if i keep getting error: Local variable j defined in an enclosing scope must be final or effectively final

What to do if i keep getting error: Local variable j defined in an enclosing scope must be final or effectively final

我正在尝试读取位置 (i) 上有多少行并显示由 enter 分隔,此时显示哪一个 (j) - 示例 15 中的 1 按下 enter 时将显示 2 of 15 这是导致错误的部分代码:

int i = 0;
        int j = 0;


        try {
            ResultSet rs = stmt.executeQuery("SELECT * FROM product WHERE Location = 'REC1U'");
            while(rs.next()) {
                i++;
            }
            rs.next();
            tfield.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if(e.getKeyCode() == KeyEvent.VK_ENTER) {
                        j++; // <--- this is causing above error
                        String l = String.valueOf(j);

                        count.setText(l);
                    }
                }

                });
        } finally {
            stmt.close();
        }

我试图让它最终化只是为了摆脱它,但无论如何它都行不通...

您可以使用内部具有最终计数器的对象。例如:

final AtomicInteger j = new AtomicInteger(0);

//...
public void keyPressed(KeyEvent e) {
    j.incrementAndGet();
}