Java布尔while循环-计算否定
我是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
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)
如果(saleswhile(!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教程中对此进行了解释。