2012-07-25 9 views
0

파일을 읽고 hashmap을 사용하여 저장하려고하는데 "java.lang.ArrayIndexOutOfBoundsException : 0"오류가 있습니다. 내 입력에는 공백으로 구분 된 두 개의 열이 있습니다. 같은 이름의 ID는 다른 항목과 동일합니다. 도움을 주시면 감사하겠습니다. 감사.파일 및 저장소에서 읽음

입력 :

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

이것은 내게 잘못되었습니다 :'new FileReader (". txt")'. (또한 코드를 좀 더 현명하게 포맷 해보십시오. 여기에 중괄호가 있습니다.) –

+2

'colorsANDnumbersWrite.data' 파일의 예제 컨텐츠를 제공해 주시겠습니까? – manix

+0

및 열 및 nextLine의 인쇄 내용은 무엇입니까? 일반적으로 버그가 유용한 정보를 제공하기 전에 변수를 출력하는 것이 보통입니까? – Mark

답변

3

내가 스캔을 시도하고있는 회선을 점검한다. 나는 그것이 비어 있다고 의심하고 따라서 스캐너는 그것을 원하는대로 나눌 수 없다.

나는 반환 된 배열의 길이를 주장/검사하는 것이 좋습니다. 2 가지 요소가 없다면 쉽게보고하고 원하는대로 계속하거나 중단 할 수 있습니다. 사용자에게 잘못된 내용을 알려주는 역할을합니다. 당신이 어딘가에 빈 줄이 대부분의 경우

2

(당신이 줄 바꿈 최종 파일 않는가? 그리고 아마, 그 후 빈 줄이 있습니다.)

if(columns.length == 2) 
+0

yupp : – user1549861

+0

@ user1549861 (대답의 왼쪽에있는 훅을 클릭하여) 가장 올바른 답을 표시하십시오. –

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(); 
} 

가 갖는 당신이 시도하기 전에 당신은 확실히 선을 분할 할 수 있습니다 확인해야합니다.

관련 문제