如何解决扫描器类别中使用分隔符的问题
| 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
但是它抛出了异常,误差ѭ3。
有什么问题
解决方法
您必须在4方法中使用适当的正则表达式。下面的代码应该工作:
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]
,问题在于,当您指定定界符为逗号时,换行符不再是定界符。
将文件更改为4,hello,my,name,is,它应该可以工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。