使用split()方法拆分字符串,在Java中使用空格作为分隔符

时间:2017-11-06 04:57:32

标签: java

我正在编写一个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()方法进行一些练习并更好地了解它。

2 个答案:

答案 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]没有任何值