当前页面: 开发资料首页 → 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()方法就知道为什么要注释掉了