这可能是显而易见的事情,但是当我试图强制用户继续输入值直到他输入有效值时,我得到一个错误,该变量无法解析。
然后,如果我事先声明它,我会收到错误的重复值。
do {
float x = Float.parseFloat(javax.swing.JOptionPane.showInputDialog("Enter 1");
} while (x != 1);
编译器是否应该首先执行do
语句,然后再担心while
?
答案 0 :(得分:3)
在循环之前声明x
,使其范围更加像下面那样:
float x = 0.0f;
do {
x = Float.parseFloat(javax.swing.JOptionPane.showInputDialog("Enter 1");
} while (x != 1);
答案 1 :(得分: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"));
}
请注意代码中缺少的结束括号。
答案 2 :(得分:0)
float x=0.0f;
do{
x = Float.parseFloat(javax.swing.JOptionPane.showInputDialog("Enter 1"));
}
while (x != 1);
导致错误的原因是,您已声明x
内的loop
不可见,而条件变量x
和closing parenthesis
在结束时遗漏了initialization
。
如果错了,请纠正我