0
    if ((x != A) || (x != a )|| ( x != B) || (x != b) || ( x != C) || (x != c) || (x != D) || (x != d) || ( x != F) || (x != f))
    {
    System.out.println("Points: -1");
     return true;
    }
    else
    {
    System.out.println("hi");
     return false;
    }

出于某种原因,我无法让它返回除真实之外的任何其他内容。

4

4 回答 4

4

取前两个条件:(x != A) || (x != a )

您在这里所说的是,true如果x不等于A或不返回,则返回a

假设x == A,第一个条件将返回假,第二个条件将返回真。因此,您的整个 if 条件将返回 true。

同样对于x == a. 这里第一个条件产生true,if 条件也产生。

您可能的意思是使用ANDor&&代替OR( ||) 连接所有这些条件。

于 2012-11-02T12:22:58.980 回答
2
if ((x != 'A') || (x != 'a' ) ....
          ^ missing quotes

但即便如此,x 也可以是“A”或“a”,或者两者都不是。使用OR评估,您将始终以TRUE结束,因为 x 将始终不是您正在测试的其他值之一。

(x != 'A') && (x != 'a' ) ...

于 2012-11-02T12:25:05.500 回答
0

看看这个小提琴http://jsfiddle.net/CtCqe/2/

使用正则表达式可能会更好,不确定用户的输入是否只是单个字符。

html

<div id="result">Result</div>
<input type='text'/>
<div id="pressed"></div>

jQuery

$('input').on('change input', function(){

   var x = $(this).val();



if((x == 'A') || (x == 'a' )|| ( x == 'B') || (x == 'b') || ( x == 'C') || (x == 'c') || (x == 'D') || (x == 'd') || ( x == 'F') || (x == 'f')){
    $('#result').html('False');
    $(this).val('');
}else{
    $('#result').html('True');
    $(this).val('');
}

$('#pressed').html(x);

});
于 2012-11-02T12:48:43.957 回答
0

是的,这将永远是真的让我们只考虑你表达的一部分((x != A) || (x != a ) ...

如果 x=A,那么第一个陈述是假的,但另一个是真的,因为你有析取,所以你总是会得到真实的。

要获得错误,您需要 x=A 和 x=a,这可能有点不可能

于 2012-11-02T12:45:43.617 回答