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("E:\\cc.txt");
StreamTokenizer st=new StreamTokenizer(fr);
st.resetSyntax();
st.wordChars(1,9999);
st.whitespaceChars(0, ' ');
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("@@is word:"+st.sval);
}
else if(st.ttype==st.TT_NUMBER)
{ num++;
System.out.println("@@is num:"+st.sval);
}
else if(st.ttype==st.TT_EOL)
{
line++;
System.out.println("\\n");
}
}
System.out.println("***********************");
System.out.println("word:"+word);
System.out.println("num:"+num);
System.out.println("line:"+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这句不是不起作用吗?
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("E:\\cc.txt");
StreamTokenizer st=new StreamTokenizer(fr);
st.resetSyntax();
st.wordChars(1,9999);
st.whitespaceChars(0, ' ');
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("@@is word:"+st.sval);
}
else if(st.ttype==st.TT_NUMBER)
{ num++;
System.out.println("@@is num:"+st.sval);
}
else if(st.ttype==st.TT_EOL)
{
line++;
System.out.println("\\n");
}
}
System.out.println("***********************");
System.out.println("word:"+word);
System.out.println("num:"+num);
System.out.println("line:"+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这句不是不起作用吗?
while((tmp=st.nextToken())!=st.TT_EOF)
{
//System.out.println(st.sval);
if(st.TT_NUMBER == tmp)
{
num++;
System.out.println("@@is num:"+st.nval);//这里改了
}
else if(tmp==st.TT_WORD)
{
word++;
System.out.println("@@is word:"+st.sval);
}
else if(tmp==st.TT_EOL)
{
line++;
System.out.println("\\n");
}
}