2

我正在学习 java 并尝试 Stack 的示例。这是代码:

import java.util.*;
public class StackTry {

static boolean checkParity (String expression,
                            String open, String close) {
Stack stack = new Stack();
StringTokenizer st = new StringTokenizer (expression, " \t\n\r\+/-(){}", true);
while (st.hasMoreTokens()) {
String tmp = st.nextToken();
if (tmp.equals(open)) stack.push(open);
if (tmp.isEmpty()) return true;
return false;
}
public static void main (String [] args) {
System.out.println (
checkRarity("a - (b - (c - a) / (b + c) - 2), "(", ")));
}
}
}

我在第 7 行收到错误,如何解决?

Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )

我按照建议编辑了代码,但是得到

Multiple markers at this line
- The method checkRarity(String, String) is undefined for the type 
 StackTry
- Syntax error on token ""a - (b - (c - a) / (b + c) - 2), "", , expected after 
 this token
4

2 回答 2

3

错误是因为\+.

在 Java 中,以 开头的任何内容都\被视为转义序列的开头,并且\+不是有效的转义序列。删除 ,\因为您不必逃避+.

于 2012-12-28T10:15:50.833 回答
2

在您的字符串中,您似乎正在尝试转义+符号,您不必这样做,这就是您收到错误的原因。它应该是这样的:

StringTokenizer st = new StringTokenizer (expression, " \t\n\r+/-(){}", true);

您可以+直接指定,如果您尝试在中提供反斜杠,StringTokenizer则必须使用双反斜杠\\

于 2012-12-28T10:15:05.967 回答