声称以下代码使用带有标志的do循环来重复输入,直到获得有效的int。
do
{
try
{
// attempt to convert the String to an int
n = Integer.parseInt( s );
goodInput = true;
}
catch ( NumberFormatException nfe )
{
s = JOptionPane.showInputDialog( null,
s + " is not an integer. Enter an integer" );
}
} while ( !goodInput );
我对这里的逻辑感到有些困惑。如果Integer.parseInt工作正常,或者没有发生异常,那么“goodInput”在
行分配给“true” goodInput = true;
然后!goodInput将被评估为False,因此while循环将再次继续。这似乎与设计逻辑相矛盾,即,在执行正确的解析操作之后,while循环应该停止。我上面的分析有什么问题。
答案 0 :(得分:5)
do { } while(x);
循环x == true
,即直到 x == false
。
因此,do { } while(!x);
会在x == false
时循环,即直到 x
为true
。
答案 1 :(得分:3)
然后!goodInput将被评估为False,因此while循环将再次继续。
否 - 当表达式求值为false
时,循环停止。
尝试将其作为普通英语阅读:“do(stuff)while(expression)为true”。
答案 2 :(得分:1)
do / while循环的行为与普通的while循环完全相同,但保证至少运行一次。最好以这些方式来考虑它。
答案 3 :(得分:0)
如果它正确解析它,则goodInput为true,这使得!goodInput为false,因此循环将结束。
答案 4 :(得分:0)
当条件(在这种情况下为!goodInput)的计算结果为false时,do-while将停止循环。只要它是真的,它将继续循环。
答案 5 :(得分:0)
对你的所有分析都是正确的。只有当你说while statement evaluation
为false
时,它才会再次循环。
答案 6 :(得分:0)
!goodInput
必须为false才能终止循环。如果goodInput
为真,则!goodInput
为false,因此循环终止。