输入完成后如何终止扫描仪?

use*_*175 11 java

public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        try {
            while (scan.hasNextLine()){

                String line = scan.nextLine().toLowerCase();
                System.out.println(line);   
            }

        } finally {
            scan.close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想知道在完成输入输入后如何终止程序?由于扫描仪在几次"输入"之后仍然会继续,假设我要继续输入输入...我试过:

if (scan.nextLine() == null) System.exit(0);
Run Code Online (Sandbox Code Playgroud)

if (scan.nextLine() == "") System.exit(0);  
Run Code Online (Sandbox Code Playgroud)

他们没有工作....该计划继续和初衷混淆,

Ste*_*n C 23

问题是程序(像你的程序)不知道用户已经完成了输入输入,除非用户...某种方式......告诉它.

用户可以通过两种方式执行此操作:

  • 输入"文件结束"标记.在UNIX和Mac OS上(通常)CTRL+ D,在Windows CTRL+上Z.这将导致hasNextLine()返回false.

  • 输入一些程序识别为"我已完成"的特殊输入.例如,它可能是一个空行,或某些特殊值,如"退出".该程序需要专门测试.

(您还可以想象使用计时器,并假设用户已经完成,如果他们没有输入任何输入N秒,或N分钟.但这不是一个用户友好的方式来做到这一点.)


您当前版本失败的原因是您正在使用==测试空字符串.您应该使用equalsisEmpty方法.(请参阅如何比较Java中的字符串?)

其他需要考虑的事项是区分大小写(例如"退出"与"退出")以及前导或尾随空格的影响(例如"退出"与"退出").