Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java布尔while循环-计算否定_Java_While Loop_Boolean Logic_Boolean Expression - Fatal编程技术网

Java布尔while循环-计算否定

Java布尔while循环-计算否定,java,while-loop,boolean-logic,boolean-expression,Java,While Loop,Boolean Logic,Boolean Expression,我是Java的初学者,虽然我认为我对布尔逻辑理解得相当好,但我被这个while循环绊倒了: boolean done = false; while(!done) { String answer = JOptionPane.showInputDialog(null, "message"); if (answer == null) finish(); try { sales = Double.parseDouble(answer); if

我是Java的初学者,虽然我认为我对布尔逻辑理解得相当好,但我被这个while循环绊倒了:

boolean done = false;
while(!done) {
    String answer = JOptionPane.showInputDialog(null, "message");

    if (answer == null) finish();

    try {
        sales = Double.parseDouble(answer);
        if (sales<= 0) throw new NumberFormatException();
        else done = true;
    }
boolean done=false;
而(!完成){
字符串answer=JOptionPane.showInputDialog(空,“消息”);
if(answer==null)finish();
试一试{
销售=双倍。解析双倍(答案);

如果(sales您将循环条件误读为
,而(done=true)
,这与实际含义相反(并且使用了错误的运算符)。您不会将布尔值与布尔值进行比较;从技术角度讲,这是一个愚蠢的操作。您也不会在条件表达式中为循环变量赋值,因为这会带来麻烦,而且不是您想要的

让我们走过去


done
启动
false
。在条件中需要一个布尔表达式,
while(!done)
。布尔表达式必须计算为
true
,循环体才能执行。
!done
=>
!false
第一次执行。
!false
的值是多少?
为true
!因此表达式计算为
true
,循环体将执行。

让我们给有效行一些行成员:

while(!done) // (1)
{
    String answer = JOptionPane.showInputDialog(null, "message");

    if (answer == null) finish();

    try
    {
        sales = Double.parseDouble(answer); // (2)
        if (sales<= 0) throw new NumberFormatException();
        else done = true; // (3)
    }
while(!done)//(1)
{
字符串answer=JOptionPane.showInputDialog(空,“消息”);
if(answer==null)finish();
尝试
{
sales=Double.parseDouble(答案);/(2)

如果(sales
while(!done)
相当于
while(done==false)
您缺少了一点代码(至少是
catch
和/或
finally
子句的
try
语句和
while
循环的右括号)。
while
循环包含
try
.An”!“布尔值前面的标记反转其原始值。(例如!true=false)抱歉,Ted,这只是完整代码的一个片段。下面有一个catch语句,while循环上有一个括号,更不用说其他方法了。:)非常感谢!如果条件是错误的,while循环不迭代的概念现在看起来很明显,但我的生命我无法理解。这完全解释了它。“如果你认为我的答案回答你的问题,请考虑通过点击SkestMakouthEffic解释接受它。”sn没有考虑返回的真值:那么while(!done)=while(![true])=while(false)。我也没有意识到while(false)这个事实条件将停止循环。
done
可以更改值。它是一个变量。因此
!done
计算值等于
done
在计算时具有的任何值的否定值。因此当
done
为真时,则
!done
为假。即
while(假)
停止循环是
的全部要点,而
在Java教程中对此进行了解释。