'while(Scanner.hasNextLine())'被跳过,即使存在更多行?

问题描述 投票:-2回答:1

下面显示的代码应从文本文件中单独读取每一行,将当前行存储到String fileLine中,然后打印出fileLine的内容

当文本文件仅包含one行时,代码将按照描述的那样执行以打印行。但是,当文本文件有多于一行时,'while(sc.hasNextLine())语句将被完全跳过,这使我抓狂,因为我使用了与此类似的版本读取同一项目中其他文本文件的代码。

代码

private File stockFile = new File(stockFilePath);

public void fetchCurrentStock() throws FileNotFoundException {
        Scanner sc = new Scanner(stockFile);
        String fileLine = "";
        //Name\tPrice\tDescription\tSupplierName\tItemImagePath\tItem_ID\tQuantity
        while(sc.hasNextLine()){
            fileLine = sc.nextLine();
            System.out.println(fileLine);
        }
   }

文本文件内容

Samsung Galaxy S20+ 999 Samsung's latest & greatest PhonesHub   null    001 20
Samsung Galaxy A10  130 Capture clear photos, in any light. Watch, play and browse more on the 6.2 inch HD+ display.    PhonesHub   null    002 25
Samsung Galaxy S10  750 Last years base flagship model, great power at a respectable price. PhonesHub   null    003 30
Huawei P30      380 Take your photography to the next level with the P30’s triple camera & 6.1 inch display.    PhonesHub   null    004 15

更新:似乎文本文件中每行的文本较少时,Scanner.nextLine()会按预期运行。也许在这里不能使用Scanner类?

java while-loop io java.util.scanner
1个回答
0
投票
这似乎是我的

IntelliJ IDE的当前版本(或更可能是我的配置)的问题。运行调试工具进行调查时,while循环将立即返回false。

将项目导入Eclipse后,代码按预期运行。我也可以将项目的IntelliJ版本构建到JAR中,并且可以按预期运行,因此这是我目前的解决方法。
© www.soinside.com 2019 - 2024. All rights reserved.