扫描器定界符以获取由“”和“\n”分隔的标记 java
scanner delimiter to get tokens separated by " " and "\n" java
我正在尝试从如下所示的文件中读取标记
4 2
3 1 2 3
所以我希望这些标记由“”或输入 (\n) 分隔。
我该如何实现?
我尝试了一些,但没有成功。
in = new FileInputStream("input.txt");
scan = new Scanner(in);
scan.useDelimiter(" \n");
System.out.println("I get here");
t = new Translator(Integer.parseInt(scan.next()), Integer.parseInt(scan.next()));
System.out.println("I don't get here");
int temp = Integer.parseInt(scan.next());
while(temp > 0){
m.final_states.add(Integer.parseInt(scan.next()));
temp--;
}
我似乎找不到任何关于我想要的分隔符类型的相关信息。我看过几个例子,我也读过文档中的例子,但我很困惑。
我得到的错误是java.lang.NumberFormatException
一个很常见的问题是您忘记 trim 字符串。试试这个:
m.final_states.add(Integer.parseInt(scan.next().trim()));
和
t = new Translator(Integer.parseInt(scan.next().trim()), Integer.parseInt(scan.next().trim()));
Scanner
的好处是它允许读取原始类型 w/o 显式转换。您可以尝试以下方法:
try (FileInputStream source = new FileInputStream(PATH)) {
Scanner scanner = new Scanner(source);
Translator translator = new Translator(scanner.nextInt(), scanner.nextInt());
while(scanner.hasNextInt()){
m.final_states.add(scanner.nextInt());
}
}
请注意,在 scanner.hasNextInt()
的帮助下,您无需计算第二行的输入数。
我正在尝试从如下所示的文件中读取标记
4 2
3 1 2 3
所以我希望这些标记由“”或输入 (\n) 分隔。 我该如何实现?
我尝试了一些,但没有成功。
in = new FileInputStream("input.txt");
scan = new Scanner(in);
scan.useDelimiter(" \n");
System.out.println("I get here");
t = new Translator(Integer.parseInt(scan.next()), Integer.parseInt(scan.next()));
System.out.println("I don't get here");
int temp = Integer.parseInt(scan.next());
while(temp > 0){
m.final_states.add(Integer.parseInt(scan.next()));
temp--;
}
我似乎找不到任何关于我想要的分隔符类型的相关信息。我看过几个例子,我也读过文档中的例子,但我很困惑。
我得到的错误是java.lang.NumberFormatException
一个很常见的问题是您忘记 trim 字符串。试试这个:
m.final_states.add(Integer.parseInt(scan.next().trim()));
和
t = new Translator(Integer.parseInt(scan.next().trim()), Integer.parseInt(scan.next().trim()));
Scanner
的好处是它允许读取原始类型 w/o 显式转换。您可以尝试以下方法:
try (FileInputStream source = new FileInputStream(PATH)) {
Scanner scanner = new Scanner(source);
Translator translator = new Translator(scanner.nextInt(), scanner.nextInt());
while(scanner.hasNextInt()){
m.final_states.add(scanner.nextInt());
}
}
请注意,在 scanner.hasNextInt()
的帮助下,您无需计算第二行的输入数。