Java从文本文件中拆分字符串

时间:2013-08-13 09:35:44

标签: java

我正在尝试从一个文本文件中拆分一些字符串,这些文件在整数之间有选项卡。整数/ t整数/ t整数。

50      

1   2   46

1   15  38

1   16  43

1   21  4

1   25  24

1   35  2

1   43  6

我尝试使用字符串令牌但ArrayIndexOutOfBoundsException出来了,所以我自己做了一些调试并发现了这个。

我的代码如何:

public static void main(String[] args) throws FileNotFoundException {
    Scanner input = new Scanner(new File("Datas.txt"));
    String data;
    int i = 0;

    while (input.hasNextLine()) {
        data = input.nextLine();
        String[] sp = data.split("\\t+");

        String n1 = sp[0];
        System.out.println("|" + n1 + "|");
    }
    input.close();
}

这是我编译并运行它时结果的图片链接。enter image description here

编辑:不知道为什么结果会像这样结果。切换到bufferedReader,现在一切都很好。谢谢你的帮助。

4 个答案:

答案 0 :(得分:0)

这应该正确分割

while(input.hasNextLine())
{
    data = input.nextLine();
    String [] sp = data.split("\\s+");
    if(sp.lenght>1){
     String n1 = "|";
     for(String tmp:sp){
         n1=n1.concat(h);
     }
     n1=n1.concat("|");
     System.out.println(n1);
    }
}

答案 1 :(得分:0)

按如下方式更改您的代码

public static void main (String []args) throws FileNotFoundException {
    Scanner input = new Scanner(new File("D:\\sample.txt"));
    String data;
    int i = 0;
    while(input.hasNextLine())
    {
        data = input.nextLine();
        String [] sp = data.split("\t");
        String n1 = sp[0];
        System.out.println("|" + n1 + "|" );
    }
    input.close();
}

答案 2 :(得分:0)

您可能不会使用Scanner#nextInt()方法。

File f = new File("Datas.txt");
Scanner scanner = null;

try {
    scanner = new Scanner(f);

    while (scanner.hasNextInt()) {
        System.out.println(scanner.nextInt());
    }
} catch (Exception e) {
    e.printStackTrace();
} finally {
    if (scanner != null) {
       scanner.close();
    }
}

答案 3 :(得分:0)

我会做得更简单

    while (sc.hasNext()) {
        String next = sc.next();
    }

它用空格和新行打破