关于这个java代码段的问题

时间:2011-04-29 21:19:41

标签: java

声称以下代码使用带有标志的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循环应该停止。我上面的分析有什么问题。

7 个答案:

答案 0 :(得分:5)

do { } while(x);循环x == true,即直到 x == false

因此,do { } while(!x);会在x == false时循环,即直到 xtrue

答案 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 evaluationfalse时,它才会再次循环。

答案 6 :(得分:0)

!goodInput必须为false才能终止循环。如果goodInput为真,则!goodInput为false,因此循环终止。