我有这个声明。当有空格或;
为char
时应该退出。但是当这些条件中的任何一个为真时它都不会退出循环;
当我使用&&
时,它效果更好,但现在(显然)预期这两个条件都是正确的。这对我没有帮助。
while ( !pt.get(locCursor).equals(';') || !pt.get(locCursor).equals(' ')){
word = word + pt.get(locCursor);
if (locCursor < pt.size()-1){
locCursor ++;
}else{
break;
}
}
答案 0 :(得分:6)
看看你的情况。如果pt.get(locCursor)
的结果为;
,那么它不是空格,因此第二个条件为true
,使整个条件成立。如果结果是空格,那么它不是;
,而且整个条件都是真的。
而不是
!egual(';') OR !equal(' ')
使用
!( equal(';') OR equal(' ') )
或
!egual(';') AND !equal(' ')
答案 1 :(得分:0)
基本上你拥有的是:
当OR(||表示法)中的(!x ||!y)时,真值表如下所示
x y r
0 0 0
1 0 1
0 1 1
1 1 1
由于你有结果的反转(!在x和y前面)你的表只有在两者都为0的情况下才是真的。
目前您正在检查char是否不等于';'或''(来自其中一个的任何char diff会打破这段时间。)
我想你要删除两个'!'在此期间。