用户输入3个数字,我假设所有都是正确的整数和不同的。我正在尝试让程序打印出从最低值到最高值的序列。为什么我的其他人不在这里工作?或者我在代码中犯了一些明显的错误?
代码不完整,我只写了这么远,然后测试了它。当我输入8然后输入2然后输入4时,我打算打印出2,3,4,5,6,7,8,但事实并非如此。相反,它打印出4,5,6,7,8,
System.out.print("Enter a number: ");
int n1 = Integer.parseInt(in.readLine());
System.out.print("Enter a number: ");
int n2 = Integer.parseInt(in.readLine());
System.out.print("Enter a number: ");
int n3 = Integer.parseInt(in.readLine());
if ((n1 > n2) | (n2 > n3)) {
for (int i = n3; (i <= n1); i++) {
System.out.print(i + ",");
}
}
else if ((n1 > n3) | (n3 > n2)) {
for (int i = n2; (i <= n1); i++) {
System.out.print(i + ",");
}
}
}
}
答案 0 :(得分:3)
你的逻辑是错误的。当n1 = 8
,n2 = 2
和n3 = 4
,n1 > n2
成立时,您的代码最终会占用第一条路径(从n3
循环到{{1} })。 n1
的价值甚至没有考虑在内。
请记住,如果你采用当前的方法,你将需要大约六个“else if”子句来处理起始和结束变量的所有可能组合。您可能会更好地确定最小值和最大值是什么,将它们分配给两个变量,并循环这两个值之间的值。它会为你节省很多打字。
答案 1 :(得分:3)
据推测,在你的第一个条件中,你想说“n1大于n2,n2大于n3”。但是,“and”运算符写为&&
,而不是|
(它是位级“或”运算符)。因此,您的第一个条件(n1 > n2
)足以满足第一个if
,因此else
不适用。
答案 2 :(得分:2)
java逻辑OR运算符是||
,而不是|代表BITWISE OR