为什么以下代码有效:
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,"我收到编译时错误。
答案 0 :(得分:1)
在测试下一个int之前,您正在从;; platform-dependent!
(spit "spit.txt" (String. b))
;; better
(spit "spit.txt" (String. b java.nio.charset.StandardCharsets/UTF_8))
中取出值:
Scanner
上述行会从 float year = scanner.nextFloat();
中移除int
,因此Scanner
将返回hasNextInt()
。
附注:不确定您使用false
与hasNextInt()
使用nextFloat()
或Float
...
答案 1 :(得分:1)
如果"" -call位于" next" -call之后,扫描仪将等待2个值。
这是因为var CookieJar = unirest.jar(true);
等待一个值,消耗它,然后返回它,而next___()
等待一个值,将其推回,然后返回它的存在。