如何读取以逗号分隔的文件

时间:2015-07-18 06:11:20

标签: java string file java.util.scanner string-split

从具有字符串列表的文件中读取。文件中有三行,我试图打印它们,因为它们在文件中查看,但输出只打印第一行。 '女人'不应该打印。 “男人也不应该

   public void readFile(String fileName) {
    String gender;
    String width;
    String height;
    String name;
    String x;
    String y;

     try {
        scanIn = new Scanner (new File (fileName));
        this.scanIn.useDelimiter(", ");

    } catch (FileNotFoundException | NumberFormatException exception) {

        exception.getMessage();
    }

    while(this.scanIn.hasNext()){
        gender = scanIn.next();

        if(gender.equals("woman")){

            width = scanIn.next();
            height = scanIn.next();
            x = scanIn.next();
            y = scanIn.next();
            name = scanIn.next();

            System.out.printf("%s %s %s %s %s", width,height,x,y,name);
        }
         if(gender.equals("man")){

                width = scanIn.next();
                height = scanIn.next();
                x = scanIn.next();
                y = scanIn.next();
                name = scanIn.next();

                System.out.printf("%s %s %s %s %s", width,height,x,y,name);

            }
    }
}

文件看起来像

man, 20, 15, 55, 90, phil
woman, 30, 10, 5, 80, Sam
man, 320, 170, 10, 90, olie

输出应为

20, 15, 55, 90, phil
30, 10, 5, 80, Sam
320, 170, 10, 90, olie

而输出给了我

20, 15, 55, 90, phil
woman

1 个答案:

答案 0 :(得分:2)

错误是因为当您使用分隔符为", "时,扫描程序在遇到新行时不会停止。

因此,当它读取第一行时,它会将phil\nwomen读作单个标记。所以你的循环会搞砸了。

要修复,您可以告诉它在", |\n"上分隔,这也会删除换行符。

scanIn.useDelimiter(", |\n");

注意:您可能还想在printf()对帐单的末尾添加换行符,否则您将在一行中获得整个输出