Java中使用charAt()结合||运算符报错:Operator ||不能应用于boolean与char
解决Java中"Operator || cannot be applied to 'boolean','char'"错误
嘿,这个错误我太熟悉啦!咱们先搞懂问题出在哪,再给你几种实用的解决办法~
错误原因
你写的条件判断逻辑有语法问题:Java里的||(逻辑或运算符)要求两边的表达式都必须是布尔值,但你写的bezeichnung.charAt(i) == 'b'||'c'会被Java解析成:
- 先计算
bezeichnung.charAt(i) == 'b',得到一个布尔值(true/false) - 然后尝试把这个布尔值和
'c'(字符类型)做||运算——这就触发了类型不匹配的错误,因为布尔和字符不能直接用逻辑或连接。
修正方案
方案1:补全所有相等判断(最直观的写法)
把每个辅音都单独和当前字符做相等判断,确保||两边都是布尔表达式:
for(int i=0;i<8;i++){ char currentChar = bezeichnung.charAt(i); if(currentChar == 'b' || currentChar == 'c' || currentChar == 'd' || currentChar == 'f' || currentChar == 'g' || currentChar == 'h' || currentChar == 'j' || currentChar == 'k' || currentChar == 'l' || currentChar == 'm' || currentChar == 'n' || currentChar == 'p' || currentChar == 'q' || currentChar == 'r' || currentChar == 's' || currentChar == 't' || currentChar == 'v' || currentChar == 'w' || currentChar == 'x' || currentChar == 'y' || currentChar == 'z'){ // 这里写你要执行的逻辑 } }
提前把当前字符存到变量currentChar里,能让代码更简洁,也避免多次调用charAt(i)。
方案2:用字符串的contains方法(更简洁)
把所有辅音放到一个字符串里,直接判断当前字符是否在这个字符串中:
for(int i=0;i<8;i++){ char currentChar = bezeichnung.charAt(i); if("bcdfghjklmnpqrstvwxyz".contains(String.valueOf(currentChar))){ // 这里写你要执行的逻辑 } }
如果需要匹配大写辅音,可以先把字符转成小写:
char lowerChar = Character.toLowerCase(currentChar); if("bcdfghjklmnpqrstvwxyz".contains(String.valueOf(lowerChar))){ // do something }
方案3:正则表达式(最简洁的写法)
用正则表达式匹配辅音字符,一行搞定判断:
for(int i=0;i<8;i++){ char currentChar = bezeichnung.charAt(i); if(String.valueOf(currentChar).matches("[bcdfghjklmnpqrstvwxyz]")){ // 这里写你要执行的逻辑 } }
同样,要匹配大小写的话,正则可以加忽略大小写标记(?i):
if(String.valueOf(currentChar).matches("(?i)[bcdfghjklmnpqrstvwxyz]")){ // do something }
内容的提问来源于stack exchange,提问作者DiesDasAlex
相关产品推荐
相关产品推荐

