读书人

为什么结果不是预期 多谢

发布时间: 2012-04-12 15:46:35 作者: rapoo

为什么结果不是预期 大虾请指教 谢谢
这是我写的用字符流读文件的两个方法。。读的文件是这样的
, ./!+-*/%()[]{}$ <> <> <>
\> <:; ' "
文件第一行第二个字符是空格,第二行第四个字符是制表
我的目的是干掉所有的空格类字符,然后把文件读成一个StringBuffer字符串,但是结果不是我的预期,在干掉第一行末尾的换行之后 第二行的字符直接刷在了字符串的开头几个位置。运行结果如下
\> < :; ' "]{}$ <> <> <>

但是他的长度确在不断的增加。。
n===34
这是我想不明白的地方。。。

实现代码是下面的
下面是两个方法 望高手指教 ~!! 谢谢
public void lexer(File newfile)
{
try{
FileReader in=new FileReader(newfile);
int n=0;
Character a= '0 ';
//char a= '0 ';
StringBuffer s=null;
while((n=in.read())!=-1)
{
a=(char)n;
if(a.compareTo( ' ')==0||a.compareTo( '\n ')==0||a.compareTo( '\t ')==0)
{
System.out.println( "a=== "+a);
}
else
{
s=link(s,a);

}
System.out.println(s);
}
in.close();
}
catch(IOException e){
System.out.println(e);
}
}
public StringBuffer link(StringBuffer s1,Character newa)
{
String s2=Character.toString(newa);
StringBuffer s3=new StringBuffer(s2);
if(s1==null)
{
s1=s3;
}
else
{
s1=s1.append(s3);
}
System.out.println(s1.length());
//System.out.println(s1);
return s1;
}

[解决办法]
用正则表达式吧!
贴一下你的输入和你期望的输出。
[解决办法]
在windows中,换行符是\r\n
这里if(a.compareTo( ' ')==0||a.compareTo( '\n ')==0||a.compareTo( '\t ')==0) 应该再加上一个条件:a.compareTo( '\r ')
[解决办法]
mark

读书人网 >J2SE开发

热点推荐