我有一堆字符,想要删除所有不是“#”“。”的内容“E”和“G”。
我尝试使用这个:
if (buffer.get(buffertest) == 'G'|'E'|'#'|'.')
但遇到了类型不兼容的问题。
这个根本问题是按位 OR 运算符和 Java 运算符优先级层次结构的错误使用。这种类型的 Java 表达式从左到右计算,并且 == 运算符优先于 |。结合起来,你的表达大致可以翻译为:
(buffer.get(buffertest) == 'G') | 'E' | '#' | '.'
表达式的第一部分buffer.get(buffertest) == 'G' evaluates to a boolean.<br>
The second part of the expression
'E'| '#'| '.'` 求值为 int,缩小为 char
这会导致不兼容的类型编译时错误。您可以通过以下方式扩展检查来更正代码:
char ch = buffer.get(buffertest);
if(ch == 'G' || ch == 'E' || ch == '#' || ch == '.') {
// do something
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)