我正在编写一个Java程序来练习我的编程技巧。该程序应该从文件中读取输入,使用空格拆分,然后将其打印出来。
import java.io.*;
import java.util.*;
public class SumsInLoopTester {
public static void main(String[] args) {
try
{
File f = new File("SumsInLoop.txt");
Scanner sc = new Scanner(f);
int n = sc.nextInt();
int i = 0;
int sum[] = new int[n]; // I will use this later
while(sc.hasNextLine())
{
String input = sc.nextLine();
String splits[] = input.split("\\s+");
System.out.println(splits[0]);
System.out.println(splits[1] + "\n");
}
} catch(FileNotFoundException e) {
System.out.println(e);
}
}
}
以下是输入文件中的内容: SumsInLoop.txt
我希望看到的输出是:
761892 144858
920553 631146
。 。 。
。 。 。
但相反,我得到了ArrayIndexOutofBoundsException异常。我尝试在第二列上的每个数字后添加空格并且它有效。但我只是好奇为什么在没有添加空格的情况下它不会起作用。我花了很多时间试图解决这个问题,但没有任何线索。我知道在输出字符串之前我不必分割字符串。只想用split()方法进行一些练习并更好地了解它。
答案 0 :(得分:1)
首先,你不应该期待看到
761892 144858
920553 631146
因为您已经按空格分割,所以在splits
您的问题很可能是由文件中的某些行没有空格引起的。然后索引splits[1]
将抛出ArrayIndexOutofBoundsException,因为在这种情况下splits
只有一个元素
编辑:您可以在打印前进行条件状态 替换
System.out.println(splits[1] + "\n");
与
if (splits.length > 1) {
System.out.println(splits[1] + "\n");
}
答案 1 :(得分:1)
如果您希望看到这个:
761892 144858
920553 631146
只需像这样使用,
while (sc.hasNextLine()) {
String input = sc.nextLine();
System.out.println(input);
}
没有使用System.out.println(splits[1] + "\n");
,因为splits[1]
没有任何值