为什么这段Java代码不能工作?如何将像||或$$这样的逻辑比较添加到if语句中的字符类型:
System.out.println("Type Text");
txt = ms.next();
size = txt.length();
for (int i = 0; i < size; i++) {
if ((txt.charAt(i)) == ('a'||'b')) {
System.out.println("is the letter A or B");
}
}发布于 2018-06-15 04:23:19
您不能将两个char之间的||运算符指定为表示此字符或此处尝试的另一个字符:
if ((txt.charAt(i)) == ('a'||'b')) { ...}||是必须放在两个布尔表达式之间的逻辑OR,如下所示:
if (txt.charAt(i) == 'a' || txt.charAt(i) == 'b'){
...
}The Operators tutorial是总结Java语言中运算符(本质上是关于它们的描述和优先级)的一个非常好的参考资料。
为了避免重复,你可以引入一个局部变量:
char c = txt.charAt(i);
if (c == 'a' || c == 'b'){
...
}要指定更多的逻辑OR,使用包含有效字符的集合是一种有趣的可能性:
if (Arrays.asList('a', 'b', 'c').contains(txt.charAt(i)){
...
}为了提高性能(如果您有许多有效的字符),您可以使用Set:
if (new HashSet<>(Arrays.asList('a', 'b', 'c')).contains(txt.charAt(i)){
...
}如果条件语句必须多次使用,则更好的做法是一次实例化集合。
https://stackoverflow.com/questions/50864702
复制相似问题