2

我有一个文本文件,内容如下:

Description|SKU|Retail Price|Discount
Tassimo T46 Home Brewing System|43-0439-6|17999|0.30
Moto Precise Fit Rear Wiper Blade|0210919|799|0.0

我已经有了它,以便我阅读所有内容,并且它运行良好,除了它读取第一行的事实,这是 .txt 文件的一种图例,必须忽略它。

public static List<Item> read(File file) throws ApplicationException {
    Scanner scanner = null;
    try {
        scanner = new Scanner(file);
    } catch (FileNotFoundException e) {
        throw new ApplicationException(e);
    }

    List<Item> items = new ArrayList<Item>();

    try {
        while (scanner.hasNext()) {
            String row = scanner.nextLine();
            String[] elements = row.split("\\|");
            if (elements.length != 4) {
                throw new ApplicationException(String.format(
                        "Expected 4 elements but got %d", elements.length));
            }
            try {
                items.add(new Item(elements[0], elements[1], Integer
                        .valueOf(elements[2]), Float.valueOf(elements[3])));
            } catch (NumberFormatException e) {
                throw new ApplicationException(e);
            }
        }
    } finally {
        if (scanner != null) {
            scanner.close();
        }
    }

    return items;
}

如何使用 Scanner 类忽略第一行?

4

3 回答 3

8

只需在任何处理之前调用scanner.nextLine() 一次就可以了。

于 2012-11-04T19:28:12.990 回答
5

在循环之外调用scanner.nextLine() 怎么样。

scanner.nextLine();//this would read the first line from the text file
 while (scanner.hasNext()) {
            String row = scanner.nextLine();
于 2012-11-04T19:28:54.813 回答
2
scanner.nextLine();
while (scanner.hasNext()) {
      String row = scanner.nextLine();
      ....
于 2012-11-04T19:29:28.873 回答