Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hasNextInt()和nextInt()方法流_Java_Java.util.scanner - Fatal编程技术网

Java hasNextInt()和nextInt()方法流

Java hasNextInt()和nextInt()方法流,java,java.util.scanner,Java,Java.util.scanner,这个条件语句(从Udacity的Java编程介绍|问题集4 |问题#20)是如何工作的 import java.util.Scanner; 公共类MonthPrinter{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(系统输入); 系统输出打印(“输入月号(1到12)”; 如果(!in.hasNextInt()){ System.out.println(“非整数.终止”); }否则{ int theMonthNumber=in.nextInt(); 如果(!(月号>

这个条件语句(从Udacity的Java编程介绍|问题集4 |问题#20)是如何工作的

import java.util.Scanner;
公共类MonthPrinter{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
系统输出打印(“输入月号(1到12)”;
如果(!in.hasNextInt()){
System.out.println(“非整数.终止”);
}否则{
int theMonthNumber=in.nextInt();
如果(!(月号>=1和月号(&M)
我认为hasNextInt()方法和nextInt()方法都应该请求用户输入

否。Javadoc说(部分)

如果可以使用该方法将此扫描仪输入中的下一个标记解释为默认基数中的int值,则返回true。扫描仪不会超过任何输入

最后一句话告诉您,它不使用
int
函数
hasnetint()
仅用于检查输入值。它不会使用输入。所发生的是,它将使扫描仪前进并检查数据,但之后它将返回到以前的位置。因此,从技术上讲,扫描仪的位置没有改变。这就是为什么它不提示下一次输入的原因


只有
nextInt()。Java中的每个类都有。它确切地说明了这些方法的作用。如果它没有说它会提示用户进行额外的输入,那么就不会发生这种情况。一个方法检查是否存在int,另一个方法实际接受int。另外,你不必猜测或假设。所有内置类都是开源的。
当程序运行时,我提供了一个整数r作为一个输入,不会提示我输入另一个输入。这是因为您没有将其编程为请求第二个输入。查看
循环,或添加更多代码以请求另一个输入。我想我现在就知道了。在这个简化的代码中:Scanner test=new Scanner(System.In);System.out.println(“输入一个数字:”;test.hasnetint();test.hasnetint();提示用户输入,并根据用户的输入确定是否返回布尔值。我感到困惑,因为我误解了文档中的内容,认为hasnetint()方法只是查看现有输入,而不是提示用户(在本例中)谢谢大家,谢谢大家的帮助!
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());
            }
        }
    }
}