站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题关于StreamTokenizer中的TT_NUMBER

关于StreamTokenizer中的TT_NUMBER

摘要: 关于StreamTokenizer中的TT_NUMBER


package stream;

import java.io.FileReader;
import java.io.StreamTokenizer;

public class TStreamTokenizer
{
/**
* @param args
*/
public static void main(String[] args) throws Exception
{
int num=0;
int word=0;
int line=0;
FileReader fr=new FileReader(-#34;E://cc.txt-#34;);
StreamTokenizer st=new StreamTokenizer(fr);
st.resetSyntax();
st.wordChars(1,9999);
st.whitespaceChars(0, -#39; -#39;);
st.eolIsSignificant(true);
int tmp=0;
while((tmp=st.nextToken())!=st.TT_EOF)
{
//System.out.println(st.sval);
if(st.ttype==st.TT_WORD)
{ word++;
System.out.println(-#34;@@is word:-#34;+st.sval);
}
else if(st.ttype==st.TT_NUMBER)
{ num++;
System.out.println(-#34;@@is num:-#34;+st.sval);
}
else if(st.ttype==st.TT_EOL)
{
line++;
System.out.println(-#34;//n-#34;);
}
}
System.out.println(-#34;***********************-#34;);
System.out.println(-#34;word:-#34;+word);
System.out.println(-#34;num:-#34;+num);
System.out.println(-#34;line:-#34;+line);
}

}

__________________________________________________________________________

E://cc.txt的内容为:

1234567890
eeeeeeeeeeeeeeee
uuuuuuuuuuuuuuuuuuuu
555.123456

-------------------------------------------------------------------------

显示的结果为:

@@is word:1234567890
/n
@@is word:eeeeeeeeeeeeeeee
/n
@@is word:uuuuuuuuuuuuuuuuuuuu
/n
@@is word:2555555555555555555.123456
/n
***********************
word:4
num:0
line:4


我想问的就是为什么文本中明明有两行数字,但是却显示num:0?那么st.TT_NUMBER这句不是不起作用吗?






不解 啊,学习!!
up


将st.resetSyntax();注释掉
while((tmp=st.nextToken())!=st.TT_EOF)
{
//System.out.println(st.sval);
if(st.TT_NUMBER == tmp)
{
num++;
System.out.println(-#34;@@is num:-#34;+st.nval);//这里改了
}

else if(tmp==st.TT_WORD)
{
word++;
System.out.println(-#34;@@is word:-#34;+st.sval);
}

else if(tmp==st.TT_EOL)
{
line++;
System.out.println(-#34;//n-#34;);
}
}


去看看resetSyntax()方法和ordinaryChar()方法就知道为什么要注释掉了


↑返回目录
前一篇: java异常问题不知道错在哪了?
后一篇: 映射键值问题(大虾一定要帮忙啊!)