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

标签 java input numbers java.util.scanner

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

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 ...
}

更新:

如果用户输入一个数字然后按回车,上面的代码运行良好。在没有输入数字的情况下按回车键时,程序循环将终止。

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

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 作为分隔符。我将其设置为匹配空格或行分隔符。因此,用户可以输入空格分隔的数字,然后按回车键进行扫描。这可以根据需要用尽可能多的行重复。完成后,用户无需输入数字即可再次点击回车。当输入很多数字时,认为这很方便。

关于java - 继续阅读数字,直到使用扫描仪到达换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5071458/

相关文章:

Java数字模式两个三角形并排形成一个正方形/矩形

java - 如何将项目添加到 Android 的顶部菜单

java - 如何从C++调用java

Java读取多行文本文件,在最后一个字符后的每行末尾添加分隔符

java - 读取图像文件时保持编码

input - 节点本地映射减少作业

Java lwjgl 键盘处理程序

javascript - 在Javascript中生成4个随机数,它们添加到某个值

c# - 将枚举与列表进行比较<int>

java - 我使用扫描读取的 java 程序不会停止执行