gpt4 book ai didi

java - 使用 Scanner.nextLine() 方法的时机

转载 作者:搜寻专家 更新时间:2023-11-01 02:56:41 26 4
gpt4 key购买 nike

来自教科书“Java 中的数据结构和算法,6/e”的第 40 页(代码略有修改):

Scanner scanner = new Scanner(System.in);
System.out.print("Please enter an integer: ");
while (!scanner.hasNextInt()) {
scanner.nextLine();
System.out.print("Invalid int; pls enter an int: ");
}
int i = scanner.nextInt();
System.out.print(i);

如果我通过 System.in 输入一个非整数值(也就是说:1.0),它将进入 while 循环体,因为 !scanner.hasNextInt() 的 boolean 值是 true。

但是我不明白作者在第 4 行的 while 循环中的另一行 scanner.nextLine(); 中的语法,它会生成任何东西吗?如果删除 scanner.nextLine(); 行,为什么程序无法运行? (不知怎的,电脑内存在删除后几乎变满了..)

最佳答案

@Guy 说的是对的。 hasNext 函数调用不会做任何事情来推进您的输入指针。 hasNextInt 检查您的下一个输入是否为整数,但要在该输入后前进到下一行,您需要调用 next 函数。否则,您将永远在非整数输入上检查 hasNextInt,进入无限循环,这就是内存使用率超高的原因。

关于java - 使用 Scanner.nextLine() 方法的时机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57130504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com