2014-09-27 36 views
0

我正在尝试读取文件并以特定格式打印出结果。打印时,它只打印每一个其他条目。在while循环中,我尝试切换if语句并将0更改为-1,然后对++进行计数,但无效。从java中读取文件,但输出会跳过其他所有行

try 
    { 
    File f = new File("BaseballNames1.csv"); 
    FileReader fr = new FileReader(f); 
    BufferedReader br = new BufferedReader(fr); 

    ArrayList<String> players = new ArrayList<String>(); 
    String line; 
    int count = 0; 

    while((line = br.readLine()) != null) 
    { 
     if(count == 0) 
     { 
      count++; 
      continue; 
     } 
     players.add(br.readLine()); 
    } 

    for(String p : players) 
    { 
     String[] player = new String[7]; 
     player = p.split(","); 

     first = player[0].trim(); 
     last = player[1].trim(); 
     birthDay = Integer.parseInt(player[2].trim()); 
     birthMonth = Integer.parseInt(player[3].trim()); 
     birthYear = Integer.parseInt(player[4].trim()); 
     weight = Integer.parseInt(player[5].trim()); 
     height = Double.parseDouble(player[6].trim()); 
     name = first + " " + last; 
     birthday = birthMonth + "/" + birthDay + "/" + birthYear; 
     System.out.println(name + "\t" + birthday + "\t" + weight + "\t" + height); 
     //System.out.printf("First & Last Name %3s Birthdate %3s Weight %3s Height\n", name, birthday, weight, height); 
    } 
    } 
    catch(Exception e) 
    { 
    e.getMessage(); 
    } 
+0

在添加刚刚阅读的行之前,您要调用br.readLine()两次。所以它应该是players.add(线); – Juniar 2014-09-27 15:50:14

回答

2

我觉得你的问题就在这里:

while((line = br.readLine()) != null) 
{ 
    if(count == 0) 
    { 
     count++; 
     continue; 
    } 
    players.add(br.readLine()); 
} 

你正在阅读一个新行每一次,即使您已经阅读之一。你想这样的:

while((line = br.readLine()) != null) 
{ 
    if(count == 0) 
    { 
     count++; 
     continue; 
    } 
    players.add(line); //The important change is here. 
} 
+0

啊啊谢谢@ Pokechu22! – 2014-09-27 17:16:21

1

变化

players.add(br.readLine()); 

players.add(line); 

您的版本读取和写入下一行players,不是当前。

相关问题