Sammy D PoiseEn
Sammy D PoiseEn

Reputation: 81

java file reading help for Data Structures

I am trying to read from a file in java, but I keep getting different errors and the program just doesn't seem to be reading the right pieces of information. The Main Code:

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

The file I am trying to read from:

Upvotes: 1

Views: 41

Answers (1)

Tim Biegeleisen
Tim Biegeleisen

Reputation: 521457

I think you should be splitting each line you read using an appropriate delimeter. If the sample data you provided in the question be accurate, then using \\s+,\\s+ as a delimeter should work.

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

Upvotes: 1

Related Questions