Reputation: 81
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
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