2016-09-20 6 views
1

私はJavaのファイルから読み込もうとしていますが、別のエラーが発生していて、プログラムは正しい情報を読み込んでいないようです。 メインコード:データ構造のためのjavaファイルの読み込みヘルプ

package main; 

import java.io.File; 

import java.io.FileNotFoundException; 

import java.util.Scanner; 

public class Main { 
    public static void main(String[] args) { 

     File file = new File("C:\\Users\\Samuel\\Desktop\\Projects\\School\\Titanic\\src\\main\\titanic.txt"); 
     try { 
      Scanner fileReader = new Scanner(file); 
      String passengerData = ""; 
      int passengerNumber = 0; 
      int passengerClass = 0; 
      boolean passengerAge = false; 
      boolean passengerSex = false; 
      boolean survived = false; 
      int spaceIndex = 0; 
      int spaceIndex2 = 0; 

      fileReader.nextLine(); 
      while(fileReader.hasNextLine()){ 
       passengerData = fileReader.nextLine(); 
       spaceIndex2 = passengerData.indexOf(" ,",spaceIndex); 

       System.out.println(passengerData.substring(spaceIndex+1, spaceIndex2)); 
       passengerNumber = Integer.parseInt(passengerData.substring(spaceIndex+1, spaceIndex2)); 
       spaceIndex = spaceIndex2; 
       spaceIndex2 = passengerData.indexOf(" ,", spaceIndex); 
       if(passengerData.substring(spaceIndex, spaceIndex2).equals("1st Class")){ 
        passengerClass = 1; 
       }else if(passengerData.equals("2nd class")){ 
        passengerClass = 2; 
       }else{ 
        passengerClass = 3; 
       } 

       spaceIndex = spaceIndex2; 
       System.out.println(passengerData.toString()); 
       System.out.println(passengerNumber+"\t"+passengerClass); 
      } 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

私は読んしようとしているファイルから:

  • 1、第一級、大人、男性、はい
  • を生き延び

    • インデックス、クラス、年齢、性別、
    • 2、第一級、大人、男性、
    • 3、ファーストクラス、大人、男性、はい
    • 4、ファーストクラス、大人、男性、はいはい
    • 5、ファーストクラス、大人、男性、はい
    • 6、ファーストクラス、大人、男性、はい
    • 7、ファーストクラス、大人、男性、はい
    • 8、第一級、大人、男性、
    • 9、ファーストクラス、大人、男性、はい
    • 10、ファーストクラス、大人、男性、はい
    • 11、ファーストクラス、大人、男性、はい
    • 12、ファーストクラス、大人はい、男、はい
    • 13、1等級、大人、男、はい
    • 14、1等級、大人、男、はい (これは単なる例に過ぎません。
    +0

    (1)あなたのファイルがテキストの場合は、ファイルに実際にそれらの箇条書き項目がない限り、StackOverflowの「コード」機能を使用して投稿してください。 (2)これは 'split'の良いユースケースです。 (3)実際の出力は?私はあなたのプログラムが「あなたが間違いをしている」と言っていないと確信しています。それはあなたにそれよりも具体的な情報を与えています。私は、あなたが私たちからその情報を隠すことはむしろ慎重であると感じています。 – ajb

    答えて

    1

    私はあなたが適切な区切り文字を使用して読み込んだ各行を分割する必要があると思います。質問で入力したサンプルデータが正確であれば、\\s+,\\s+を区切り文字として使用してください。

    while (fileReader.hasNextLine()) { 
        String[] passengerData = fileReader.nextLine().split("\\s+,\\s+"); 
    
        passengerNumber = Integer.parseInt(passengerData[0].trim()); 
    
        switch (passengerData[1]) { 
         case "1st Class": 
          passengerClass = 1; 
          break; 
    
         case "2nd class": 
          passengerClass = 2; 
          break; 
    
         default: 
          passengerClass = 3; 
        } 
    
        System.out.println(passengerNumber + "\t" + passengerClass); 
    } 
    
    +0

    実際には、入力テキストのインデックス番号の前に空白があります。 –

    +0

    @SammyDPoiseEn 'index'から先頭と末尾の空白を取り除くための答えを更新しました。 –

    関連する問題