我正在尝试学习“if else”语句,但在脚本的中间“if else”部分遇到了问题。package practice;import java.util.Scanner;public class Practice {public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); System.out.println("enter a number between 1 and 10 "); if (!in.hasNextDouble()) { String word = in.next(); System.err.println(word + " is not a number"); } else if (!(in.nextDouble() > 0) || !(in.nextDouble() <= 10)) { Double wrongnumber = in.nextDouble(); System.err.println(wrongnumber + " is not between 1 and 10"); } else { System.out.println("It works!"); } return; } }没有错误,但在 'else if' 块中,我无法打印错误“..... 不在 1 和 10 之间”,无论我是否在 1 和 10 之间或更大的范围内输入数字。它也不会打印“它有效!” 当我添加'else if'块时不再行。任何建议将不胜感激。
3 回答
DIEA
TA贡献1820条经验 获得超2个赞
你打in.hasNextDouble()
了几次电话。每次它都会从输入中扫描新号码,因此可能会导致您的问题。您还应该考虑如何编写条件。我知道您可以尝试一下那里发生的事情,但这种情况很难阅读。您可以使用
(number <= 1) || (number > 10)
(通过反转运算符删除否定)例如。
慕莱坞森
TA贡献1810条经验 获得超4个赞
else if (!(in.nextDouble() > 0) || !(in.nextDouble() <= 10)) { Double wrongnumber = in.nextDouble();
我不确定,但在这里你操作 3 个不同的数字。在条件之前,将其写入变量。
不要将 int 与 double 进行比较
添加回答
举报
0/150
提交
取消