Мне нужно проанализировать текстовый файл, используя разделитель ":"
Текстовый файл выглядит так:
a: 29173: Он: Джеймс: 474937: 2: 4: 1
т: 27184: Она: Сьюзен: 474930: 6: 4: 2
с: 28174: он: Мег: 474931: 5: 4: 1
р: 29190: Она: Робин: 474947: 4: 4: 4
Мой первый вопрос: как я могу / могу разобрать первый символ для использования в операторе switch?
Я думал что-то вроде кода ниже (который я собрал ... но я уверен, что это неправильно).
Я знаю, что могу прочитать первый символ, и я знаю, что могу использовать оператор switch с символами, но я застрял в том, как соединить их вместе.
File file = new File("test.txt");
// Read the file
try {
Scanner scanner = new Scanner(file).useDelimiter(":");
String line = scanner.nextLine();
while (scanner.hasNextLine())
{
line = line.trim();
int index;
String type;
String name;
String identifier = scanner.next();
switch(line.charAt(0)) {
case 'p':
index = scanner.nextInt();
name = scanner.next();
break;
case 'c':
index = scanner.nextInt();
type = scanner.next();
name = scanner.next();
int partyC = scanner.nextInt();
int empathyC = scanner.nextInt();
int carryingCapacityC = scanner.nextInt();
break;
case 't':
index = scanner.nextInt();
type = scanner.next();
int creatureT = scanner.nextInt();
int weightT = scanner.nextInt();
int valueT = scanner.nextInt();
break;
case 'a':
index = scanner.nextInt();
type = scanner.next();
int creatureA = scanner.nextInt();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
VS.
Хорошо, поэтому я прочитал и поиграл с некоторыми, и думаю, что могу просто использовать цикл if-else. Тем не менее, я получаю ряд ошибок (ниже кода).
File file = new File("test.txt");
// Read the file
try {
Scanner scanner = new Scanner(file).useDelimiter(":");
while (scanner.hasNextLine())
{
String line = scanner.nextLine();
line = line.trim();
int index;
String type;
String name;
char identifier = line.charAt(0);
if (identifier == 'p') {
index = scanner.nextInt();
name = scanner.next();
} else if (identifier == 'c') {
index = scanner.nextInt();
type = scanner.next();
name = scanner.next();
int partyC = scanner.nextInt();
int empathyC = scanner.nextInt();
int carryingCapacityC = scanner.nextInt();
} else if (identifier == 't') {
index = scanner.nextInt();
type = scanner.next();
int creatureT = scanner.nextInt();
int weightT = scanner.nextInt();
int valueT = scanner.nextInt();
} else if (identifier == 'a') {
index = scanner.nextInt();
type = scanner.next();
int creatureA = scanner.nextInt();
} else {
System.out.println("This is not a valid line of input");
} System.out.println("Identifier: " + identifier);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Ошибка:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at SorcerersCave.main(SorcerersCave.java:33)