мне нужно разобрать текстовый файл, используя разделитель «:»Как разобрать текстовый файл/нужно первый символ для использования в переключатель заявлении
Текстовый файл выглядит следующим образом:
A: 29173: Он: Джеймс: 474937: 2: 4: 1
т: 27184: Она: Susan: 474930: 6: 4: 2
с: 28174: Он: Meg: 474931: 5: 4: 1
p: 29190: Она: Робин: 474947 : 4: 4: 4
Мой первый вопрос: как я могу разобрать первый символ для использования в инструкции switch? Я думал о чем-то вроде кода ниже (который я собрал вместе ... но я уверен, что это неверно).
Я знаю, что могу прочитать первый символ & Я знаю, что могу использовать оператор switch с char (s), но я застрял в том, как свести их вместе.
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)
Легче помочь, если вы сообщите, что не работает :) Ошибка компиляции? –