try {
Scanner in = new Scanner(new File("text.txt"));
Formatter out = new Formatter("text1.txt");
in.useDelimiter(",");
int num = in.nextInt();//this line throws null exception
for(int i = 0; i < num && in.hasNext(); i++)
{
out.format("%s","#string \n" + i );
out.format("%s", in.next());
}
out.close();
}
catch (Exception e) {
System.out.print(e.getMessage());
}
输入是:
4
hello,my,name,is
4是单词数。 输出必须是:
hello my name is
但是它出现了null
错误。
什么是问题?
答案 0 :(得分:3)
您必须在useDelimiter
方法中使用正确的正则表达式。以下代码应该有效:
try {
Scanner in = new Scanner(new File("text.txt"));
Formatter out = new Formatter("text1.txt");
in.useDelimiter(",|\n|\r\n|\\s+");
int num = in.nextInt();
for(int i = 0; i < num && in.hasNext(); i++)
out.format("string # %d is: [%s]\n", i, in.next() );
out.close();
}
catch (Exception e) {
System.err.print("Exception: " + e);
}
对于给定的输入
4
hello,my,name,is
输出:
string # 0 is: [hello]
string # 1 is: [my]
string # 2 is: [name]
string # 3 is: [is]
答案 1 :(得分:0)
问题在于,当您指定分隔符是逗号时,换行符不再是分隔符。
将您的文件更改为4,hello,my,name,is,它应该可以正常工作。