在下面的代码中,我试图将以下输入拆分为两个最初用空格分隔的字符串。
输入:
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();
但是,我想知道这条额外的线路来自哪里?
答案 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)。