Java StreamTokenizer预期的结束字符
我正在尝试实现一个标记器,将数学输入字符串解析为它们各自的部分,我在第二行代码中得到了一个看似微不足道的错误,因为我发布了它,它期望;线路中间的某个地方Java StreamTokenizer预期的结束字符,java,Java,我正在尝试实现一个标记器,将数学输入字符串解析为它们各自的部分,我在第二行代码中得到了一个看似微不足道的错误,因为我发布了它,它期望;线路中间的某个地方 public static void parseFormula(String text){ List<String> tokenize(String s) throws IOException { StreamTokenizer tokenizer = new StreamTokenizer(new St
public static void parseFormula(String text){
List<String> tokenize(String s) throws IOException {
StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(s));
tokenizer.ordinaryChar('-');
List<String> tokBuf = new ArrayList<String>();
while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
switch(tokenizer.ttype) {
case StreamTokenizer.TT_NUMBER:
tokBuf.add(String.valueOf(tokenizer.nval));
break;
case StreamTokenizer.TT_WORD:
tokBuf.add(tokenizer.sval);
break;
default:
tokBuf.add(String.valueOf((char) tokenizer.ttype));
}
}
return tokBuf;
}
}
公共静态公式(字符串文本){
列表标记化(字符串s)引发IOException{
StreamTokenizer tokenizer=新的StreamTokenizer(新的StringReader);
tokenizer.ordinaryChar('-');
List tokBuf=newarraylist();
while(tokenizer.nextToken()!=StreamTokenizer.TT_EOF){
开关(tokenizer.ttype){
案例StreamTokenizer.TT_编号:
add(String.valueOf(tokenizer.nval));
打破
case StreamTokenizer.TT_字:
tokBuf.add(tokenizer.sval);
打破
违约:
add(String.valueOf((char)tokenizer.ttype));
}
}
返回tokBuf;
}
}
您有一个嵌套在parseFormula
中的方法tokenize
。Java不允许嵌套方法。这就是编译错误的原因。分解这些方法后,以下代码将编译为ok:
List<String> tokenize(String s) throws IOException {
StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(s));
tokenizer.ordinaryChar('-');
List<String> tokBuf = new ArrayList<String>();
while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
switch(tokenizer.ttype) {
case StreamTokenizer.TT_NUMBER:
tokBuf.add(String.valueOf(tokenizer.nval));
break;
case StreamTokenizer.TT_WORD:
tokBuf.add(tokenizer.sval);
break;
default:
tokBuf.add(String.valueOf((char) tokenizer.ttype));
}
}
return tokBuf;
}
public static void parseFormula(String text){
}
列表标记化(字符串s)引发IOException{
StreamTokenizer tokenizer=新的StreamTokenizer(新的StringReader);
tokenizer.ordinaryChar('-');
List tokBuf=newarraylist();
while(tokenizer.nextToken()!=StreamTokenizer.TT_EOF){
开关(tokenizer.ttype){
案例StreamTokenizer.TT_编号:
add(String.valueOf(tokenizer.nval));
打破
case StreamTokenizer.TT_字:
tokBuf.add(tokenizer.sval);
打破
违约:
add(String.valueOf((char)tokenizer.ttype));
}
}
返回tokBuf;
}
公共静态公式(字符串文本){
}
试试看{
列表标记化=新的ArrayList;
StreamTokenizer tokenizer=新的StreamTokenizer(新的StringReader);
tokenizer.ordinaryChar('-');
List tokBuf=newarraylist();
while(tokenizer.nextToken()!=StreamTokenizer.TT_EOF){
开关(tokenizer.ttype){
案例StreamTokenizer.TT_编号:
add(String.valueOf(tokenizer.nval));
打破
case StreamTokenizer.TT_字:
tokBuf.add(tokenizer.sval);
打破
违约:
add(String.valueOf((char)tokenizer.ttype));
}
}
}捕获(IOE异常){
系统输出打印ln(e);
}
如果我没弄错的话
try {
List<String> tokenize = new ArrayList<String>(s);
StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(s));
tokenizer.ordinaryChar('-');
List<String> tokBuf = new ArrayList<String>();
while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
switch(tokenizer.ttype) {
case StreamTokenizer.TT_NUMBER:
tokBuf.add(String.valueOf(tokenizer.nval));
break;
case StreamTokenizer.TT_WORD:
tokBuf.add(tokenizer.sval);
break;
default:
tokBuf.add(String.valueOf((char) tokenizer.ttype));
}
}
}catch (IOException e){
System.out.println(e);
}