2016-07-08 8 views
-4

현재 과제를 수행 중이며 통합 문서와 자바 사이트를 여러 번 검토했으며 어디에서 잘못 표시되는지 알 수 없습니다..txt 파일을 2D 문자열 배열로로드

파일을 2D 배열로 가져 오려고합니다. Scanner w/BufferedReader 및 FileReader를 사용하여 명령 줄 인수 (titanic.txt)를 선택하고 있습니다. 나는/TEST if 문을 통해 "fileInput"이 여전히 null인지 확인합니다. 건물을 짓는 동안 문제가없고, 달리기 만하면됩니다. 여기

내 코드의 일부입니다 :

//Declare Variables 
    String[][] titanicArray = new String[1308][6]; 
    int[] classArray = new int[1308]; 
    int[] survivedIntArray = new int[1308]; 
    double[] ageArray = new double[1308]; 
    double[] ticketPriceArray = new double[1308]; 
    String inputFile = null; 
    String answerStr = null; 
    int answer1 = 0; 

    Scanner fileInput = null; 
    Scanner userInput = new Scanner(System.in); 
    inputFile = args[0]; 

    //try statement to scan command-line argument and fill the array with the data 
    try { 
     fileInput = new Scanner(new BufferedReader(new FileReader(inputFile))); 
     //TEST 
     if (fileInput != null){ 
      System.out.println("Error Taking in file"); 
     } 

     for (int row = 0; row < titanicArray.length; row++) { 
      for (int col = 0; col < titanicArray[row].length; col++){ 
       while (fileInput.hasNext()){ 
        titanicArray[row][col] = fileInput.next(); 
       } 
      } 
     } 
    } finally { 
     if (fileInput != null){ 
      System.out.println("Error Taking in file"); 
      fileInput.close(); 
     }//End of If for closing Scanner 
    } //End of finally to close Scanner 

참고 : titanic.txt 아래 같은 데이터가 (클래스, Suvived, 이름, 성별, 나이, TicketPrice)/탭없이 빈 라인 w :

1 일 알렌, 미스. 엘리자베스 월튼 여성 (29) 211.3375

1 일 앨리슨, 마스터. 허드슨 트레버 남성 0.9167 151.5500

1 0 앨리슨, 미스. 헬렌 로레인 여성 2 151.5500

1 0 앨리슨 씨 허드슨 여호수아 크레이 톤 남성 (30) 151.5500

1 0 앨리슨, 허드슨 부인 JC (베시 왈도 다니엘스) 여성 (25) 151.5500

1 앤더슨 씨 해리 남성 (48) 26.5500

1 앤드류스, 미스. Kornelia Theodosia 여성 63 77.9583

+0

"문제"는 무엇입니까? –

+0

_이 코드는 작동하지 않습니다. 문제는 정확히 어디에 있습니까? – Sanjeev

답변

3
if (fileInput != null){ 
     System.out.println("Error Taking in file"); 
    } 

코드에 다음과 같은 실수가있는 것 같습니다. 왜 fileInput != null이 좋을까요? 어쨌든 먼저 코드를 정리하고 단순화 한 다음 도움을 요청하는 것이 좋습니다. 몇 가지 아이디어 :

  • 별도의 방법으로 분석하는 별도의 파일 처리 및 파일
  • 사용하려고 -와 - 자원 예외 처리하고했다 자원 폐쇄
0

배열 (열)의 크기를 단순화 너무 작습니다 .next()는 입력 내용의 이름이 너무 길게 보이는 반면 처음 6 개의 문자열 만 제공합니다.