我如何嵌套迭代器?

How do I nested Iterator?

while (inFile.hasNextLine()) {
    SortedArrayList<Fruit> fruitList = new SortedArrayList<Fruit>();
    String marketName = inFile.next();
    while (inFile.hasNexLine()) {
        String line = inFile.nextLine();
        if(line.isEmpty())
            break;
        else {
                Sting fruitName = inFile.next();
                int price = inFile.nextInt();
                int stock = inFile.nextInt();
                fruit = new Fruit(fruitName, price, stock);
                fruitList.insert(fruit);
        }        
    }
    market = new Market(marketName, fruitList);
    marketList.insert(market);
}

我要读取文本文件。
文本文件内容如下:

A_market  
apple 1000 11  
orange 2000 6   
grape 1600 17

B_market  
apple 900 20   
orange 2100 12  

...

每个市场无法预先知道每种水果的数量。
每个市场将由空行分隔。
如何识别文本文件中的空行?

我要在嵌套迭代器的基础上空行
我尝试 isEmpty()、正则表达式、检查字母等。
然而,错误不是意志。

抱歉再问一次。
有什么帮助将不胜感激。

Java代码

 while (inFile.hasNextLine()) {
        String marketName = inFile.next();
        while (inFile.hasNexLine()) {
            String line = inFile.nextLine();
            if(line.length()==0)     //blank line
                break;
            else {
                    Sting fruitName = inFile.next();
                    int price = inFile.nextInt();
                    int stock = inFile.nextInt();
                    fruit = new Fruit(fruitName, stock, price);
                    fruitList.insert(fruit);
            }        
        }
        market = new Market(marketName, fruitList);
        marketList.insert(market);
    }

一个问题可能与混合 nextLinenext/nextInt 有关。参见 Skipping nextLine() after use next(), nextInt() or other nextFoo() methods

通常将它们混合在一起是个坏主意。任选其一。

您的一些台词也被完全跳过:

// this line is being skipped
// when it's not empty
String line = inFile.nextLine();
if(line.isEmpty())
    break;
else {
    Sting fruitName = inFile.next();
    int price = inFile.nextInt();
    int stock = inFile.nextInt();
    ...
}

我的建议是,每次您想从一行中获取每个水果的信息时使用第二个 Scanner

while (inFile.hasNextLine()) {
    String marketName = inFile.nextLine();

    while (inFile.hasNextLine()) {
        String line = inFile.nextLine();
        if (line.isEmpty()) {
            break;
        }

        // create a new Scanner just
        // for this line so it doesn't
        // mess up the calls to nextLine
        Scanner lineIn = new Scanner(line);

        Sting fruitName = lineIn.next();
        int price = lineIn.nextInt();
        int stock = lineIn.nextInt();
        ...
    }

    ...
}