使用扫描仪继续读取数字,直到到达换行符

2024-03-18

我想从控制台读取几个数字。我想要做到这一点的方法是让用户输入一系列由空格分隔的数字。代码执行以下操作:

Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()){
    int i = sc.nextInt();

    //... do stuff with i ...
}

问题是,到达新行时如何停止(同时保留上面易于阅读的代码)?在上面的参数中添加 !hasNextLine() 可以使其立即退出循环。一种解决方案是读取整行并解析出数字,但我认为这有点破坏了 hasNextInt() 方法的目的。


您想像这样设置分隔符:

Scanner sc = new Scanner(System.in);
sc.useDelimiter(System.getProperty("line.separator")); 
while (sc.hasNextInt()){
    int i = sc.nextInt();

    //... do stuff with i ...
}

UPDATE:

如果用户输入数字然后按回车键,则上述代码可以正常工作。当在未输入数字的情况下按 Enter 时,程序循环将终止。

如果您需要(更多地将其理解为可用性建议)输入空格分隔的数字,请查看以下代码:

Scanner sc = new Scanner(System.in);
Pattern delimiters = Pattern.compile(System.getProperty("line.separator")+"|\\s");
sc.useDelimiter(delimiters); 
while (sc.hasNextInt()){
    int i = sc.nextInt();
    //... do stuff with i ...
    System.out.println("Scanned: "+i);
}

它使用一个Pattern对于分隔符。我将其设置为匹配空格或行分隔符。因此,用户可以输入空格分隔的数字,然后按回车键进行扫描。可以根据需要对任意多行重复此操作。完成后,用户只需再次按 Enter 键,无需输入数字。当输入很多数字时,认为这非常方便。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用扫描仪继续读取数字,直到到达换行符 的相关文章

随机推荐