java中while嵌套if的问题

FileReader fis=new FileReader("Sha0k.txt");
BufferedReader bis = new BufferedReader(fis);
while(bis.read()!=-1)
{
num++;//记录文件中字符数
if(bis.read()==13)
num2++;//记录文件中行数
}
13是回车的ASCII码
如果遇到换行就行数加1
但为什么我运行到if时候运行完if 就直接跳出while了
我的文件中有两行啊
bis.read()刚读完13 怎么会去读成-1呢?

你的bis.read()方法在while条件中执行一次,在if条件中执行一次,不是2次吗?当然把两行读完了。你可以用个变量记录bis.read();的结果,这样就没问题了吧。如下:
FileReader fis=new FileReader("Sha0k.txt");
BufferedReader bis = new BufferedReader(fis);
boolean result=bis.read();
while(result!=-1)
{
num++;//记录文件中字符数
if(result==13)
num2++;//记录文件中行数

result=bis.read();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-14
你调用了两遍bis.read()当然不行了。
应该是
int str = 0;

while(str!=-1)
{
num++;//记录文件中字符数
if(str==13)
num2++;//记录文件中行数
}
第2个回答  2009-07-14
你这样当然不行啦,呵呵!
char tmp;

while( (tmp=bis.read()) != -1 )
{
num++;
if((int)tmp==13)num2++;
}
相似回答