标题:关于StreamTokenizer的错误?
只看楼主
无心剑
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-8-4
 问题点数:0 回复次数:12 
关于StreamTokenizer的错误?
import java.io.*;
public class Token
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(
new FileReader("person.txt"));
BufferedWriter bw = new BufferedWriter(
new FileWriter("token.txt"));
StreamTokenizer st =new StreamTokenizer(br);
int tokenType;
st.whitespaceChars(0,32);
st.eolIsSignificant(true);
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;
}
default:
;
}
}
bw.close();
}
}
这是我的程序,为什么总是报“需要常量表达式 case st.TT_NUMBER”错误,请知道的指点一下!!
搜索更多相关主题的帖子: public import Token 
2006-11-11 15:53
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
case后面的值必须是常量
明白么.?
它都已经提醒你了
st.TT_NUMBER要是final的才可以放到case里面

可惜不是你,陪我到最后
2006-11-11 21:57
无心剑
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-8-4
得分:0 
那么怎么改呢?
2006-11-11 23:02
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

声明为final或者直接在case后面写数字就可以了


可惜不是你,陪我到最后
2006-11-12 09:18
无心剑
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-8-4
得分:0 
我就是不知道如何把br.TT_NUMBER声明为final啊!
2006-11-12 12:04
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
那br.TT_NUMBER的值是多少
你直接写它的值就可以了
比如br.TT_NUMBER=5;
那case 5

可惜不是你,陪我到最后
2006-11-12 12:05
无心剑
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-8-4
得分:0 
我无法确定br.TT_NUMBER的值是多少,只是
说如果读入数字就做什么,如果读入字符就
做什么,这个程序是我从书上抄来的源程序!
2006-11-12 12:14
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
这是不允许的
除非你用if else来代替switch

可惜不是你,陪我到最后
2006-11-12 12:30
无心剑
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-8-4
得分:0 
我试过了,但是用if else的话,只能读取一行的内容,我不知道为什么?
2006-11-12 12:44
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
怎么会呢?
while (br.ready())
{
tokenType = st.nextToken();
if(tokenType==st.TT_NUMBER)
{
bw.write(String.valueOf((long)st.nval));
bw.newLine();
break;
}
else if(tokeyType==st.TT_WORD)
{
bw.write(st.sval);
bw.newLine();
break;
}
}
改成这样试试看

可惜不是你,陪我到最后
2006-11-12 13:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-102265-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.371445 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved