为什么这个程序不返回值?

zdblzwj 2007-04-25 12:34:37
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.Writer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GetPageCount {
public int getPageCount() throws IOException{
BufferedReader reader=new BufferedReader(new FileReader("E:\\jsp\\test.txt"));
String line=reader.readLine();
int i = 0;
while(line!=null){
line = reader.readLine();
String r1="(.*共 <span class=\"text_orange\">)(.*)(</span> 页.*)";
Pattern s1=Pattern.compile(r1);
Matcher m1=s1.matcher(line);
boolean T1=m1.matches();
if(T1)
{
i=Integer.parseInt(m1.group(2)) ;
System.out.println("--------总页数-------:"+i);//这儿输出I有值
}

}
return i;
}

}

为什么不返回值呢?我测试的时候好像根本就没有执行return i
...全文
204 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
brooksychen 2007-04-25
  • 打赏
  • 举报
回复
while(line!=null){
line = reader.readLine();

这儿先改成
while(line = reader.readLine() != null){

然后设置断点,单步执行程序调试一下,看看在输出i的值到返回之前,哪一步出现了问题。
For_suzhen 2007-04-25
  • 打赏
  • 举报
回复
i=Integer.parseInt(m1.group(2)) ;
====================================
除了io异常,这一句也可能抛异常
For_suzhen 2007-04-25
  • 打赏
  • 举报
回复
好像根本就没有执行return i
============================
好像,你怎么知道没走,去主调函数中接一下,看看有没有值,或者在return i 前面加上System.out.println("xxxxxxxxxxx");看看走没走这一步,有可能像一楼说的,抛了异常
daniel_kaka 2007-04-25
  • 打赏
  • 举报
回复
你每读一行匹配一次的方法不好,应该一次读完,然后再匹配查找~~
imA 2007-04-25
  • 打赏
  • 举报
回复
while(line!=null){
line = reader.readLine();

这里的
line = reader.readLine(); 应该放到while循环的最后面,否则你文件的第一行被跳过了。
daniel_kaka 2007-04-25
  • 打赏
  • 举报
回复
E:\\jsp\\test.txt这个文件的第一行你跳过去了,没处理第一行;
qinmi 2007-04-25
  • 打赏
  • 举报
回复
是不是有异常了,就不走return i了。
你把异常捕获一下,不要抛出异常。
daniel_kaka 2007-04-25
  • 打赏
  • 举报
回复
你可以这样:

String str="";
while((line=reader.readLine()) != null){
str += line;
}
String r1="(.*共 <span class=\"text_orange\">)(.*)(</span> 页.*)";
Pattern s1=Pattern.compile(r1);
Matcher m1=s1.matcher(str);
while(m1.matches()){
//在这处理所有匹配到的数据
}
zdblzwj 2007-04-25
  • 打赏
  • 举报
回复
daniel_kaka(卡卡)

你说读完再查找?
我也想那样啊,可是我要的数据很多,我是用的http读完的再存txt里面,再读出来,你说的方法如果我可以实现那我就可以走很多弯路了,可是我不会呀,大哥
zdblzwj 2007-04-25
  • 打赏
  • 举报
回复
谢谢..非常感谢大家..
问题解决.是因为
while(line!=null){
line = reader.readLine();

正因为大家所说..这句造成第一句没有读到,也是这句报的异常..谢谢
小弟在这儿受教了!!!

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧