2

私はJavaを学んでおり、スタックの例を試しています。これはコードです:

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を 2 つ使用する必要があります。\\

于 2012-12-28T10:15:05.967 に答える