Nie można rozpoznać zmiennej po zapytaniu użytkownika o zmienną wejściową

Prawdopodobnie jest to coś oczywistego, ale gdy próbuję zmusić użytkownika do wprowadzania wartości, dopóki nie wprowadzi poprawnej wartości, pojawia się błąd, że nie można rozwiązać zmiennej.

Następnie, jeśli zadeklaruję to wcześniej, pojawia się błąd mówiący o zduplikowanej wartości.

do {
    float x = Float.parseFloat(javax.swing.JOptionPane.showInputDialog("Enter 1");
} while (x != 1);

Czy kompilator nie powinien uruchamiaćdo najpierw oświadczenie, zanim zaczniesz martwić się owhile?