我在看一段不是我写的Java代码,注意到它在一些地方包含了&,这是一段从中缀到后缀符号转换器的代码。
如果我把这段代码放在Eclipse中,它不喜欢这些& amp,并为它们创建错误,错误是& 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);
}
6条答案
按热度按时间qnyhuwrf1#
您正在从编码错误的网站复制粘贴代码。此
&
应替换为与号(&
)。在HTML中,你不能简单地写
&
,因为它是一个转义字符。所以,在历史上,他们发明了escape sequence来表示和号,它是:&
.这就是网站不幸向你展示的。所以,为了回答这个问题:
&&
应为:&&
。这是逻辑AND运算符。wbgh16ku2#
这看起来像是源文件的编码问题。
&
是ISO-8859-1字符集中的与号字符。kknvjkwl3#
这看起来像是对Java文件的错误编码。我只知道
&&
操作符,它是逻辑AND。eh57zj3b4#
&
是&
的HTML转义版本。应将所有
&
替换为&
bz4sfanl5#
java&中没有,这显然是从HTML页面复制粘贴的结果。&用&替换来修复它。
dddzy1tm6#
在Java中,您可以:
&&
&
问题在于代码中包含尚未成功解码的XML实体,因此
&
表示&
,就像>
表示>
一样。