【发布时间】:2018-01-23 23:17:45
【问题描述】:
我正在尝试编写使用 Scanner 类来获取用户输入的代码。但是hasNext()、hasNextInt()、hasNextLine()每次都会陷入无限循环。
public static void getInput(ArrayList<Double> arr){
Scanner input = new Scanner(System.in);
String data = "";
String init;
while(input.hasNextLine()){
init = input.nextLine();
data += init;
}
.
.
.
}
【问题讨论】:
-
那么,你认为它是如何工作的?什么应该告诉扫描仪没有下一行?提示:按
ENTER输入一个换行符,这算作...换行符。你知道EOF这个字符吗? -
你确定这是一个“无限循环”还是只是
hasNextLine阻塞等待输入? -
@Fureeish 我明白,但下一次迭代不应该使用换行符吗?
-
当然它会消耗它,但是你知道当
hasNext...家族的成员发现你与System.in绑定它并且扫描仪缓冲区中没有任何内容时会发生什么吗?它会等待输入……它会继续这样做,直到您提供一个使hasNext...停止的字符。对于hasNextLine(),那将是end of file character。对于hasNextInt(),它可以是任何无法转换为int的字符序列,依此类推... -
@Fureeish 哦,我明白了。如何提供 EOF 字符。还是我创建自己的哨兵价值?
标签: java input java.util.scanner