2012-07-25 57 views
0

我正在嘗試讀取文件並使用hashmap存儲它,但存在此錯誤「java.lang.ArrayIndexOutOfBoundsException:0」。我的輸入有兩列,按空格分隔,如 姓名等等不同的條目。幫助表示讚賞。謝謝。從文件和商店中讀取

輸入:

Mary ID 
Mary Lastname 
Mary Place 
Mary DOB 
Mary Homepage 
Mary Postcode 
John ID 
John Lastname 
John Place 
John DOB 
John Homepage 
John Postcode 

代碼:

import java.util.*; 

class ReadFileAndStoreHashmap { 
    public static void main(String[] args) { 
     try{ 
      Scanner scanner = new Scanner(new FileReader(".txt")); 

      HashMap<String, String> map = new LinkedHashMap<String, String>(); 

      while (scanner.hasNextLine()) { 
       String[] columns = scanner.nextLine().split(" "); 
       map.put(columns[0], columns[1]); 
       System.out.println(map); 
      } 
     } 
     catch (Exception e) { 
      System.out.println(e.toString()); 
     } 
    } 
} 
+3

這看起來不對我:'新的FileReader(「。txt」)'。 (另外,請嘗試更明智地設置你的代碼的格式。大括號在這裏全是。) – 2012-07-25 15:52:17

+2

你能否提供'colorsANDnumbersWrite.data'文件的示例內容? – manix 2012-07-25 15:52:19

+0

什麼是列和nextLine的打印?通常在錯誤提供有用的信息之前打印出變量? – Mark 2012-07-25 15:53:36

回答

3

我會檢查你正在試圖掃描線。我懷疑它是空白的,因此掃描儀不能根據需要進行分割。

我建議斷言/檢查返回數組的長度。如果它沒有2個元素,那麼你可以很容易地報告這個並按需要繼續或中斷,同時向用戶報告什麼是錯誤的。

2

最有可能你有一個空行的地方(沒有你的文件用新行結束?再有就是後一個空行,大概。)

添加復像

if(columns.length == 2) 
+0

yupp那是probelem固定它..謝謝.... – user1549861 2012-07-25 16:32:56

+0

@ user1549861請標記幫助你最正確的答案(通過點擊答案左側的鉤子)。 – 2012-07-25 16:34:34

0

我喜歡親自使用BufferedReader。

這裏是我的建議:「行= NULL」

try { 
    String line; 
    BufferedReader filestart = new BufferedReader(new FileReader(file)); 
    for (line = filestart.readLine(); line !=null; line = filestart.readLine()) { 

      String[] columns = line.split(" "); 
      map.put(columns[0], columns[1]); 
      System.out.println(map); 

    } 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

有應確保你絕對可以分割線,你嘗試之前。