首页 > 解决方案 > 扫描仪使用循环从命令行读取文本文件,但循环不会中断

问题描述

所以我想从命令行使用 java 中的 .text 或 .data 文件读取

java name < filename.data

这是代码:

        ArrayList<String> input = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNextLine()) {
             System.out.println("Reading line");
             String line = scanner.nextLine().trim();
             System.out.println("The line is: " + line);
             if (line.equals("") || line.isEmpty()) {
                 System.out.println("Found blank area");
                  break;
              }  
             System.out.println("Adding to arrayList");
             input.add(line);

        }
        System.out.println("Read in was successful");

"system.out.println("Read in was successful"); 行从未到达。似乎在读取后用于中断循环的'if'语句也从未到达。甚至似乎循环都没有返回到顶部。这是我的输出(该方法确实成功读取了我所有的文本文件)

Reading line
The line is: car
Adding to arrayList
Reading line
The line is: mega
Adding to arrayList
Reading line
The line is: bed
Adding to arrayList
Reading line
The line is: stop
Adding to arrayList
Reading line
The line is: game
Adding to arrayList
Reading line
The line is: pots
Adding to arrayList
Reading line
The line is: arc
Adding to arrayList

我希望再运行一次,通过打印“找到空白区域”来表明程序已到达文件末尾。

所以它似乎成功地读取了行,但似乎无法中断。我的程序不会崩溃,如果有任何意义,它只会“挂起”。

标签: javacommand-linejava.util.scannerjava-io

解决方案


它没有到达if (line.equals("") || line.isEmpty())代码,因为我认为空文件中没有空行,我尝试运行代码并获得所需的输出,输入文件内容为

输出

Reading line
The line is: car
Adding to arrayList
Reading line
The line is: mega
Adding to arrayList
Reading line
The line is: bed
Adding to arrayList
Reading line
The line is: stop
Adding to arrayList
Reading line
The line is: game
Adding to arrayList
Reading line
The line is: pots
Adding to arrayList
Reading line
The line is:
Found blank area
Read in was successful

输入文件

car
mega
bed
stop
game
pots

arc

推荐阅读