初学JAVA,例题报错,求前辈指点

Fulora 2012-08-31 03:20:07

import java.io.*;
public class Welcome
{
public static void main(String args[])throws IOException
{
BufferedReader br=new BufferedReader(new FileReader("1.txt"));
BufferedWriter bw=new BufferedWriter(new FileWriter("2.txt"));
StreamTokenizer st=new StreamTokenizer(br);
st.whitespaceChars(0, 32);
st.eolIsSignificant(true);
int tokenType;
while(br.ready())
{
tokenType=st.nextToken();
switch(tokenType)
{
case st.TT_NUMBER://这里报错,说例表达式必须是常量表达式,但不知道应该怎么改
bw.write(String.valueOf((long)st.nval));
bw.newLine();
break;
case st.TT_WORD://同上
bw.write(st.sval);
bw.newLine();
break;
}
}
bw.close();
}
}


刚接触JAVA.. 看到这种完全面向对象的写法差点两眼一白就倒下了= =||
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alexander 2012-08-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

StreamTokenizer.TT_NUMBER
TT_NUMBER这个是静态的,直接访问就好了.
st.TT_NUMBER这么些也可以运行,只是个警告.
[/Quote]
很遗憾,LZ的问题不是出在这儿。
原因是switch-case的离散分支量必须是常量。用Java 7的可以用switch-case匹配字符串,可以试试,就算是匹配字符串,case分量也只能是常量,换变量也通不过编译。

PS:可能有人记得switch-case可以匹配枚举,但别忘记了,枚举量的实质也是常量。

如果LZ想进行变量是匹配测试的话,老老实实的用if语句吧。
2399 2012-08-31
  • 打赏
  • 举报
回复
静态变量不属于实例类的,访问方式类名加“.”
a395885670 2012-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

因为TT_NUMBER是static变量,所以不要用StreamTokenizer对象来访问。
你改成
StreamTokenizer.TT_NUMBER

StreamTokenizer.TT_WORD
应该就好了。
[/Quote]

+1
joaaa 2012-08-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

StreamTokenizer.TT_NUMBER
TT_NUMBER这个是静态的,直接访问就好了.
st.TT_NUMBER这么些也可以运行,只是个警告.
[/Quote]
不可以运行
joaaa 2012-08-31
  • 打赏
  • 举报
回复
StreamTokenizer.TT_NUMBER
TT_NUMBER这个是静态的,直接访问就好了.
st.TT_NUMBER这么些也可以运行,只是个警告.
scbb 2012-08-31
  • 打赏
  • 举报
回复
因为TT_NUMBER是static变量,所以不要用StreamTokenizer对象来访问。
你改成
StreamTokenizer.TT_NUMBER

StreamTokenizer.TT_WORD
应该就好了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧