gpt4 book ai didi

java - hasNextInt() 和 nextInt() 方法流程

转载 作者:行者123 更新时间:2023-11-30 08:42:24 25 4
gpt4 key购买 nike

这个条件语句(来自 Udacity 的 Java 编程简介 | 问题集 4 | 问题 #20)如何工作?

import java.util.Scanner;

public class MonthPrinter {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

System.out.print("Enter a month number (1 through 12) ");

if (!in.hasNextInt()) {
System.out.println("Not an integer. Terminating");
} else {
int theMonthNumber = in.nextInt();

if (!(theMonthNumber >= 1 && theMonthNumber <= 12)) {
System.out.println("Number must be 1 through 12");
} else {
Month test = new Month(theMonthNumber);
System.out.print(test.getMonthName() + " " + test.getNumberOfDays());
}
}
}
}

第一个 if (!in.hasNextInt()) 检查用户输入是否为整数。如果它不是整数,则 main 方法打印 Not an integer。终止。这是完全有道理的。

但是,如果用户输入一个整数,代码将继续执行 else 语句,其中下一行代码是 int theMonthNumber = in.nextInt();

当程序运行并且我提供一个整数作为输入时,系统不会提示我进行其他输入。我认为 hasNextInt() 方法和 nextInt() 方法都应该请求用户输入。因此,我应该被提示输入总共两个(假设我提供一个整数)。当我试运行这个场景时,我输入了一个整数 3。这通过了 if(!hasNextInt()) 检查。

我在陈述的逻辑流程中遗漏了什么?

最佳答案

I'm thinking in my mind that both the hasNextInt() method and nextInt() method should request an input from the user.

没有。 Scanner.hasNextInt() Javadoc 说(部分)

Returns true if the next token in this scanner's input can be interpreted as an int value in the default radix using the nextInt() method. The scanner does not advance past any input.

最后一句话告诉你它消耗int

关于java - hasNextInt() 和 nextInt() 方法流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34570133/

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