为什么我的java if语句不起作用并给我这个错误:“二元运算符’&&”的错误操作数类型?
我有这个代码:
int i; for (i = 0; i < 13; ++i) { if (hand[i].charAt(0) == 'A' || 'B' && hand[i].charAt(1) == 'C') System.out.println(hand[i]); }
基本上我想要做的是如果每个数组元素中索引0处的字符是A或B,并且每个数组元素中第二个索引处的字符是C,我希望打印这些元素。 它适用于一个字符,但是当我把它放在第一部分时,它给了我这个错误:“二元运算符的错误操作数类型’&&’”。 我该如何解决这个问题?
谢谢。
你不能写
hand[i].charAt(0) == 'A' || 'B'
也许你打算写
hand[i].charAt(0) == 'A' || hand[i].charAt(0) == 'B'
BTW你可以写
"AB".indexOf(hand[i].charAt(0)) >= 0
这样,如果您愿意,可以添加更多字母。
然而,编写整个事物的最清晰的方式可能是
if (hand[i].startsWith("AC") || hand[i].startsWith("BC"))
你的问题是:
hand[i].charAt(0) == 'A' || 'B'
逻辑OR不会像您认为的那样工作。 使用:
hand[i].charAt(0) == 'A' || hand[i].charAt(0) == 'B'
句法。 每个布尔运算符( ||
, &&
等)仅适用于布尔值。 没有整数(比如C)并且没有字符。
if (hand[i].charAt(0) == 'A' || 'B' && hand[i].charAt(1) == 'C')
应该
if ((hand[i].charAt(0) == 'A' || hand[i].charAt(0) == 'B') && hand[i].charAt(1) == 'C')
||
operator(和&&
)仅适用于boolean
值,而不是char
值。 这意味着您需要明确地为每个字符编写每个比较。
更改:
hand[i].charAt(0) == 'A' || 'B'
至
(hand[i].charAt(0) == 'A' || hand[i].charAt(0) == 'B')
“或”条件括在括号中,因此在&&
之前进行评估,这是我认为你的意图。
因为它用于比较布尔值,所以传递的是char而不是布尔值。
if (hand[i].charAt(0) == 'A' || hand[i].charAt(0) == 'B' && hand[i].charAt(1) == 'C') System.out.println(hand[i]); }