是的!在条件改变执行之前?

时间:2015-02-13 00:44:53

标签: java

对于这种情况 while(!(cChoice ==' Q' || cChoice ==' q')),Q或q的输入将导致程序退出。是的位置了!导致这种情况发生?如果是这样,你能解释一下原因吗?我只是在学习Java,所以请放轻松我。

5 个答案:

答案 0 :(得分:1)

因为否定适用于整个表达,

(!(cChoice=='Q'||cChoice=='q')) 

评估为

!cChoice=='Q' && !cChoice=='q'

使用布尔代数:

(A + B)'= A'。 B'

因此,如果输入选择是程序将退出的任何一个。它不是特定于java或任何语言。

答案 1 :(得分:1)

为了帮助理解这个条件行为的原因,我们可以将其分解。

首先,如果输入是' Q'则内部块cChoice == 'Q' || cChoice == 'q'将给出True的结果。 ' q'。

接下来,在此块之外添加!否定结果。所以,在英语中,我们可以将其读作:

while NOT(input is 'Q' or 'q'), execute

或......虽然我们没有收到Q'或者' q'作为输入,执行。

答案 2 :(得分:0)

声明:
    而(cChoice ==' Q' || cChoice ==' Q')
Q或q的输入将条件设置为true。因此while循环中的代码将运行。但是当您在条件之前添加"!"(即)时,条件现在是!(true),这意味着"不是"为true,因此 false 。所以该程序退出。

答案 3 :(得分:0)

显然是真的:

not male(Jeff) or not female(Jeff)

显然是假的:

not (male(Jeff) or female(Jeff))

答案 4 :(得分:0)

理解这一点的简单方法就是取代!使用== false。

(!(cChoice=='Q'||cChoice=='q')) 

相同
((cChoice=='Q'||cChoice=='q')==false)