我查看了一段我没写过的Java代码,注意到它在一些地方包含了& amp。它是从中缀到后缀符号转换器的一段代码。
如果我把这段代码放在Eclipse中,它就不喜欢这些& amps并为它们创建错误,错误是& cannot be resolved as a variable
。
继承代码
public static String[] infixToRPN(String[] inputTokens) {
ArrayList<String> out = new ArrayList<String>();
Stack<String> stack = new Stack<String>();
// For all the input tokens [S1] read the next token [S2]
for (String token : inputTokens) {
if (isOperator(token)) {
// If token is an operator (x) [S3]
while (!stack.empty() && isOperator(stack.peek())) {
// [S4]
if ((isAssociative(token, LEFT_ASSOC) && cmpPrecedence(
token, stack.peek()) <= 0)
|| (isAssociative(token, RIGHT_ASSOC) && cmpPrecedence(
token, stack.peek()) < 0)) {
out.add(stack.pop()); // [S5] [S6]
continue;
}
break;
}
// Push the new operator on the stack [S7]
stack.push(token);
} else if (token.equals("(")) {
stack.push(token); // [S8]
} else if (token.equals(")")) {
// [S9]
while (!stack.empty() && !stack.peek().equals("(")) {
out.add(stack.pop()); // [S10]
}
stack.pop(); // [S11]
} else {
out.add(token); // [S12]
}
}
while (!stack.empty()) {
out.add(stack.pop()); // [S13]
}
String[] output = new String[out.size()];
return out.toArray(output);
}
答案 0 :(得分:15)
您是从编码错误的网站复制粘贴代码。此&
应替换为&符号(&
)。
在HTML中,您不能简单地编写&
,因为这是一个转义字符。因此,在历史上,他们发明了&符号的转义序列,即:&
。不幸的是,这就是网站向您展示的内容。
所以,回答这个问题:&&
应该是:&&
。那是逻辑AND运算符。
答案 1 :(得分:2)
这看起来像源文件的编码问题。
&
是 ISO-8859-1 字符集中的&符号。
答案 2 :(得分:1)
这看起来像是Java文件的错误编码。我只知道&&
运算符,它是逻辑AND。
答案 3 :(得分:1)
&
是&
的HTML转义版本。
您应该将所有&
替换为&
答案 4 :(得分:1)
没有&amp; amp; amp;在java中,它显然是HTML页面复制粘贴的结果。替换&amp; amp;与&amp;解决它。
答案 5 :(得分:1)
在Java中你有:
&&
&
您的问题是您的代码包含尚未成功解码的XML实体,因此&
表示&
,就像>
表示>
一样。