我正在尝试从一个看起来像这样的文件中读取令牌
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
答案 0 :(得分:1)
一个非常常见的问题是你忘记修剪弦乐。试试这个:
m.final_states.add(Integer.parseInt(scan.next().trim()));
和
t = new Translator(Integer.parseInt(scan.next().trim()), Integer.parseInt(scan.next().trim()));
答案 1 :(得分:1)
关于Scanner
的好处是它允许读取没有显式转换的原始类型。您可以尝试以下方法:
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()
的帮助下,您无需计算第二行中的输入数量。