.split('')在Java中创建一个空行输入

时间:2016-05-29 09:27:10

标签: java

在下面的代码中,我试图将以下输入拆分为两个最初用空格分隔的字符串。

输入:

3413289830 a-bcdefghij
776 a+bc

程序:

import java.io.*;
import java.util.Scanner;

public class StringOut
{
    public static void main(String[] args) throws IOException
    {
        File file = new File("C:\\test.txt");
        Scanner in = new Scanner(file);
        String line;

        while (in.hasNextLine() == true)
        {
            line = in.nextLine();
            String parts[] = line.split(' ');
            System.out.println(parts[0]);
        }
    }
}

输出:

3413289830

776

因此,正如您所看到的,第二次执行while内部的代码时将输出一个空行;这个空白行显然来自我的while循环范围内的一些代码,因此,我可以通过添加

来规避这个错误
in.nextLine();

但是,我想知道这条额外的线路来自哪里?

2 个答案:

答案 0 :(得分:1)

您确定此代码编译正确吗?您必须将line.split(" ")与双引号一起使用。

除了该错误之外,您编写的代码与输入完美配合,没有多余的空白行。我试过了。

再次检查您的输入文件。

在任何情况下都需要in.nextLine(),因为hasNextLine()仅检查是否有更多行要读取。

输入:

3413289830 a-bcdefghij
776 a+bc

程序:

import java.io.*;
import java.util.Scanner;

public class StringOut
{
    public static void main(String[] args) throws IOException
    {
        File file = new File("test.txt");
        Scanner in = new Scanner(file);
        String line;

        while (in.hasNextLine() == true)
        {
            line = in.nextLine();
            String parts[] = line.split(" ");
            System.out.println(parts[0]);
        }
    }
}

输出:

3413289830
776

答案 1 :(得分:-2)

你必须改变

System.out.println(parts[0]);

System.out.print(parts[0]);

println()将在执行后打印一个新行(ln)。