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

发布于 2024-11-09 10:33:36 字数 651 浏览 0 评论 0原文

    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 错误。 有什么问题吗?

    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());
    }

the input is:

    4
hello,my,name,is

4 is number of words.
the out put must be:

hello my name is

but it trow exeption with null error.
what is problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

宛菡 2024-11-16 10:33:36

您必须在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]

You have to use a proper regular expression in theuseDelimitermethod. The following code should work:

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);
}

Output

For the given input

4
hello,my,name,is

it outputs:

string # 0 is: [hello]
string # 1 is: [my]
string # 2 is: [name]
string # 3 is: [is]
无边思念无边月 2024-11-16 10:33:36

问题是,当您指定分隔符是逗号时,换行符不再是分隔符。

将文件更改为 4,hello,my,name,is 并且它应该可以工作。

The problem is that as you specify that the delimiter is a comma, the newline character is not a delimiter any more.

Change your file to 4,hello,my,name,is and it should work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文