Не может быть преобразован в переменную, после запроса пользователя ввести переменную

Возможно, это что-то очевидное, но когда я пытаюсь заставить пользователя продолжать вводить значение, пока он не введет действительное значение, я получаю сообщение об ошибке, что переменная не может быть разрешена.

Затем, если я объявляю это заранее, я получаю сообщение об ошибке с повторяющимся значением.

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

Разве компилятор не должен выполнятьdo заявление, прежде чем беспокоиться оwhile?

 LuGo31 окт. 2012 г., 12:43
Компилятор не выполняет ничего. Он компилирует код Java в байт-код.

Ответы на вопрос(3)

Решение Вопроса

объявлятьx перед циклом сделайте его область более широкой, как показано ниже:

float x = 0.0f;
do {
    x = Float.parseFloat(javax.swing.JOptionPane.showInputDialog("Enter 1"); 
} while (x != 1);
 ATaylor31 окт. 2012 г., 12:45
Просто для полноты добавьте отсутствующую закрывающую скобку, пожалуйста. Спасибо :)
 PermGenError31 окт. 2012 г., 12:46
@ Тейлор, ха-ха, спасибо, я даже заметил это :)
 float x=0.0f;
     do{
        x = Float.parseFloat(javax.swing.JOptionPane.showInputDialog("Enter 1"));
         }
         while (x != 1);

x внутриloop его не видно в условной переменнойx а такжеclosing parenthesis были пропущены в концеinitialization.

Поправьте меня если я не прав

Вы объявляете переменную внутри блока, что означает, что она перестанет существовать, как только вы достигнете конца блока. Конец блока с}

Пытаться:

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

Или в качестве альтернативы:

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

Также обратите внимание на отсутствующую закрывающую скобку в вашем коде.

Ваш ответ на вопрос