У меня есть текстовый файл, который выглядит примерно так:
p: 10001: Unity
c: 20007: ведьма: Моргана: 10001: 10: 15: 0
т: 30001: золото: 20004: 50: 2000
а: 40002: палочка: 20006
Я хочу использовать «:» в качестве разделителя и выполнять действия с каждой строкой в соответствии с первым символом.
try {
Scanner scanner = new Scanner(chooser.getSelectedFile()).useDelimiter(":");
int index;
String type;
String name;
String identifier = scanner.next();
if (identifier == "p") {
index = scanner.nextInt();
name = scanner.next();
partyList.add(new Party(index, name));
} else if (identifier == "c") {
index = scanner.nextInt();
type = scanner.next();
name = scanner.next();
int partyC = scanner.nextInt();
int empathyC = scanner.nextInt();
double carryingCapacityC = scanner.nextDouble();
creatureList.add(new Creature(index, type, name, partyC, empathyC,carryingCapacityC));
} else if (identifier == "t") {
index = scanner.nextInt();
type = scanner.next();
int creatureT = scanner.nextInt();
double weightT = scanner.nextDouble();
int valueT = scanner.nextInt();
treasureList.add(new Treasure(index, type, creatureT, weightT, valueT));
} else if (identifier == "a") {
index = scanner.nextInt();
type = scanner.next();
int creatureA = scanner.nextInt();
artifactList.add(new Artifact(index, type, creatureA));
} else {
System.out.println("This is not a valid line of input");
}
System.out.println("Identifier: " + identifier);
} catch (IOException e) {
e.printStackTrace();
}
Это не должно быть слишком сложно ... Однако когда я запускаю программу, я получаю что-то вроде этого:
You chose to open this file: testFileSC.txt
This is not a valid line of input
Identifier: p
This is not a valid line of input
Identifier: 10002
//etc. (you get the point) all the way through my text file.
Так что он читает файл нормально, но застревает на первом символе. Кроме того, сделать все «идентификатором». Есть идеи? Я слишком долго на это пялился!