gpt4 book ai didi

java - 为什么必须在 if 语句中定义扫描仪?

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

为什么下面的代码有效:

import java.util.Scanner;

public class WholeNumber
{


public static void main(String[] args)
{
System.out.println("Please enter a number:");
Scanner scanner = new Scanner(System.in);
if (scanner.hasNextInt())
{
float number = scanner.nextFloat(); //The if statement is testing THIS scanner value.
System.out.println("The number you entered is an integer.");
}
else
{
System.out.println("The number you entered is not an integer.");
}
}
}

但是这段代码没有:

import java.util.Scanner;

public class WholeNumber
{


public static void main(String[] args)
{
System.out.println("Please enter a number:");
Scanner scanner = new Scanner(System.in);
float number = scanner.nextFloat(); //But when I put the scanner out here, it doesn't work??
if (scanner.hasNextInt())
{
System.out.println("The number you entered is an integer.");
}
else
{
System.out.println("The number you entered is not an integer.");
}
}
}
<小时/>

看起来您必须首先定义扫描仪,以便 if 语句可以知道它正在检查什么。否则,它如何知道它正在尝试检查什么?

当我将 Scanner.nextFloat 行放在 if 语句之外时,它会编译,但在用户输入输入时在运行时卡住。如果我将该行放在外面并将 if 语句更改为“number.hasNextInt”,则会出现编译时错误。

最佳答案

您正在从 Scanner 中取出值在测试下一个 int 之前:

 float year = scanner.nextFloat();

上面的行删除了 int来自Scanner所以hasNextInt()将返回false .

旁注:不确定您为什么使用 hasNextInt()nextFloat()你应该使用FloatInt ...

关于java - 为什么必须在 if 语句中定义扫描仪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35557591/

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