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