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也算进去? 

解决方案 »

  1.   

    出现readLine()一次,就执行一次,当然会去读一行啦,与赋不赋值给n无关,赋值给n只是保存下来。
      

  2.   

    对头!所以说一般把readLine的值赋给一个变量,而不是直接通过readLine来操作值,所以一般是这样写的:String n = "";
    n = br.readLine();
    while(null!=n)
    {
    .
    .
    .
    .
    .
    n=br.readLine();
    }
    ........
      

  3.   

    lz写法有问题
    你用了3个br.readLine(),而你while()里只有一次,肯定只执行一次啦,正确写法
    String n=null;
    while((n=br.readLine())!=null){
      

  4.   

    正是这样,readLine执行一次,文件指针就会后移一行,和你赋值不赋值给n没关系
      

  5.   

    readline  你每用一次就读一次,WHILE循环中只有一次  还有两行数据都在while(br.readLine()!=null) 这给读了。
      

  6.   

     while((n=br.readLine())!=null) 

     String   []xyz= n.split( "   ");