0

这可能很明显,但是当我试图强制用户继续输入一个值直到他输入一个有效值时,我收到一个错误,即无法解析变量。

然后,如果我事先声明它,我会收到一个错误,说重复值。

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

编译器不应该先执行do语句,然后再担心while?

4

3 回答 3

3

在循环之前声明x,使其范围更宽,如下所示:

float x = 0.0f;
do {
    x = Float.parseFloat(javax.swing.JOptionPane.showInputDialog("Enter 1"); 
} while (x != 1);
于 2012-10-31T11:42:57.200 回答
0

是的,这是相当明显的事情。

您在块内声明变量,这意味着一旦您到达块的末尾,它将不再存在。块的结尾是 }

尝试:

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"));
}

还请注意代码中缺少的右括号。

于 2012-10-31T11:44:10.403 回答
0
 float x=0.0f;
     do{
        x = Float.parseFloat(javax.swing.JOptionPane.showInputDialog("Enter 1"));
         }
         while (x != 1);

错误的原因是,您在 while 条件变量中声明了它的x内部不可见, 并且在结尾处被遗漏了。loopxclosing parenthesisinitialization

如果错了请纠正我

于 2012-10-31T11:48:54.130 回答