Java,使用或使用多个条件

时间:2013-11-21 09:51:59

标签: java while-loop

我有这个声明。当有空格或;char时应该退出。但是当这些条件中的任何一个为真时它都不会退出循环; 当我使用&&时,它效果更好,但现在(显然)预期这两个条件都是正确的。这对我没有帮助。

    while ( !pt.get(locCursor).equals(';') || !pt.get(locCursor).equals(' ')){
        word = word + pt.get(locCursor);
        if (locCursor < pt.size()-1){
            locCursor ++;
        }else{
            break;
        }

    }

2 个答案:

答案 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会打破这段时间。)

我想你要删除两个'!'在此期间。