2016-07-08 11 views
-4

私は現在課題を取り組んでおり、ブックとJavaサイトを何回も繰り返してきたので、どこが間違っているのか分かりません。.txtファイルを2D文字列配列にロードする

ファイルを2D配列にインポートしようとしています。 Scanner with 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)/タブなし空白行ワット:

1 1・アレン、ミス。エリザベートウォルトン女性29 211.3375

1 1アリソン、マスター。ハドソントレバー男性0.9167 151.5500

1 0アリソン、ミス。ヘレン・ロレイン女性2 151.5500

1 0アリソン氏、ハドソンジョシュアクレイトン男性30 151.5500

1 0アリソン、夫人ハドソンJC(ベッシーワルド・ダニエルズ)、女性25 151.5500

1 1・アンダーソン氏、ハリー男性48 26.5500

1 1アンドリュース、ミス。Korneliaテオドージア女性63 77.9583

+0

どのような「問題」がありますか? –

+0

_このコードは機能しません。問題はどこにありますか? – Sanjeev

答えて

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

あなたのコードに間違った誤りがあるようです: なぜshoul fileInput != nullが問題になりますか? とにかく、最初にコードをクリーンアップして単純化してから、助けを求めるのは良い考えです。いくつかのアイデア:

  • 別々のメソッドに解析する別々のファイル処理とファイル
  • 使用してみてください - と - リソース例外処理と、あなたがかかったリソース閉鎖
0

配列(列)のサイズを簡単にするために小さすぎる.next()は、入力の名前がはるかに長いように見える間に最初の6つの文字列を提供します。

関連する問題