我有一堆字符,想要删除所有不是“#”“。”的内容“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
}
关于java - 如何检查字符是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15113785/