微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

扫描器类别中使用分隔符的问题

如何解决扫描器类别中使用分隔符的问题

|
    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 举报,一经查实,本站将立刻删除。