我基本上想知道为什么如果用户输入诸如-0.5之类的数字,我的条件语句允许变量指数变为0.0。这是我的代码...
Scanner num2 = new Scanner(System.in);
System.out.println("Enter an integer value for n: ");
int temp = 0;
if(num2.hasNextInt()) {
temp = num2.nextInt();
if(temp >= 1.0 ){
exponent = temp;
}
else {
System.out.println("You have not entered a positive integer value for n.");
exponent();
}
}
return exponent;
当我将 temp 分配给 nextInt 时,奇怪的部分发生了。通过这样做,我希望使以下条件语句按预期工作(temp 必须大于或等于 1 才能设置指数)。然而,当我调用这个函数并输入 -0.5 时,函数完成并使得指数 = 0。在这种情况下,我的目标是拥有一个大于或等于 1 的指数。提前致谢!
最佳答案
如果您的输入是-0.5
,则条件num2.hasNextInt()
将为假,下一条执行的指令将返回指数;
,这里似乎返回 0(我不知道为什么,因为您提供的代码不完整)。
要正确检查输入是否正确,请尝试以下操作:
if(num2.hasNextInt() && (temp = num2.nextInt()) >= 1) {
exponent = temp;
}
else {
System.out.println("You have not entered a positive integer value for n.");
exponent();
}
编辑:我不知道你的exponent()
方法做了什么,但如果是相同的方法,我还建议使用简单的for循环而不是递归调用,如其他答案中所述。
关于java - 使用 Java 扫描器时条件未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25836892/