Что делать, если я продолжаю получать ошибку: локальная переменная j, определенная во включающей области видимости, должна быть окончательной или фактически конечной - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь прочитать, сколько строк в местоположении (i) и отображено, разделенное вводом, какое из них отображается в данный момент (j) - пример 1 из 15, когда нажата ввод, отобразит 2 из 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();
        }

Я пытался сделать его окончательным, просто чтобы попытаться избавиться от него, но это не сработало бы в любом случае ...

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете использовать объект с внутренним счетчиком, который является окончательным. Например:

final AtomicInteger j = new AtomicInteger(0);

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