关于readLine()的小问题

peng658890 2011-08-08 02:10:00
try {
fr=new FileReader("d:\\1.txt");
br=new BufferedReader(fr);
String n="";
//先读取第一行
n=br.readLine();
allEnNum=Integer.parseInt(n);
while(br.readLine()!=null)
{
String []xyz=br.readLine().split(" ");
Node node=new Node(Integer.parseInt(xyz[0]), Integer.parseInt(xyz[1]), Integer.parseInt(xyz[2]));
nodes.add(node);
}
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}finally{
try {
br.close();
fr.close();
} catch (Exception e2) {
e2.printStackTrace();
// TODO: handle exception
}
}

文本文档里有3行数据 为什么就只读到了一行呢 难道说只要出现readLine()就会去读一行 不赋值给n也算进去?
...全文
179 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bawgiitx 2011-08-08
  • 打赏
  • 举报
回复
while((n=br.readLine())!=null)
{
String []xyz= n.split( " ");
dongdongsdo0310 2011-08-08
  • 打赏
  • 举报
回复
readline 你每用一次就读一次,WHILE循环中只有一次 还有两行数据都在while(br.readLine()!=null) 这给读了。
qybao 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 peng658890 的回复:]
try {
fr=new FileReader( "d:\\1.txt ");
br=new BufferedReader(fr);
String n= " ";
//先读取第一行
n=br.readLine();
allEnNum=Integer.parseInt(n);
while(br.……
[/Quote]
正是这样,readLine执行一次,文件指针就会后移一行,和你赋值不赋值给n没关系
luohuijun619 2011-08-08
  • 打赏
  • 举报
回复
lz写法有问题
你用了3个br.readLine(),而你while()里只有一次,肯定只执行一次啦,

正确写法
String n=null;
while((n=br.readLine())!=null){

半夜郎中 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 peng658890 的回复:]
难道说只要出现readLine()就会去读一行 不赋值给n也算进去?
[/Quote]
对头!所以说一般把readLine的值赋给一个变量,而不是直接通过readLine来操作值,所以一般是这样写的:

String n = "";
n = br.readLine();
while(null!=n)
{
.
.
.
.
.
n=br.readLine();
}
........
hq333 2011-08-08
  • 打赏
  • 举报
回复
出现readLine()一次,就执行一次,当然会去读一行啦,与赋不赋值给n无关,赋值给n只是保存下来。

62,614

社区成员

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

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