2016-02-13 262 views
1

當我從老師那裏讀取數據時,我得到一個空值。 csv文件。屬於att [0]的列1工作,但att [1]返回3個空值。Java - 從csv文件中讀取空值

我的CSV看起來是這樣的: 1,墨菲 2,戴維斯先生 3,女士辛普森 每個在單獨的行,即行1 - > 1,墨菲等

這裏是我的代碼:

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 

public class ReadCSV 
{ 
    public static void main(String[] args) 
    { 
     //Input file which needs to be parsed 
     String readTeachers = "teacher.csv"; 
     BufferedReader fileReader = null; 

     //Delimiter used in CSV file 
     final String DELIMITER = ","; 

     try 
     { 
      String line = ""; 
      //String line = inFile.readLine(); 
      //Create the file reader 
      fileReader = new BufferedReader(new FileReader(readTeachers)); 
      int count=0; 
      String[] att = new String[10]; 
      //Read the file line by line 
      while ((line = fileReader.readLine()) != null) 
      { 
       //Get all tokens available in line 
       String[] tokens = line.split(DELIMITER); 

       int i=0; 

       count++; 
       for(String token : tokens) 
       { 
        att[i] = token; 
        i++; 
        //Print all tokens 
        // System.out.println(token); 

        System.out.println(att[1]); 
        break; 
       } 


      } 
      //System.out.println(count); 
      //System.out.println(att[1]); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally 
     { 
      try { 
       fileReader.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
+0

即使在第一次迭代中,當您只爲att [0]賦值時,您正在打印'att [1]'...所以是的,在那一刻它會* *爲空。也許你想打印'att [i]'?你有沒有在調試器中一步一步地執行這個步驟,並查看每一行的'token'? –

+0

我在for循環中打印出att [1],但仍然給出了一個空值,但是我能夠在for循環中打印出att [0] – JWalters

+0

因此,使用調試器並查看'tokens'中的內容。 。 –

回答

1

您的問題在於,您在for循環中有一個break語句,它在第一次迭代結束時退出循環。因此,您只需在數組的第一個索引中添加一個值。拿出這個聲明,它應該沒問題。

  for(String token : tokens) 
      { 
       att[i] = token; 
       i++; 
       //Print all tokens 
       // System.out.println(token); 

       System.out.println(att[1]); 
       break; // <---- ***take this out*** 
      }