我希望当X等于0时循环结束。
表格应该是这样的
X | Y
10 | 1
8 | 2
6 | 3
4 | 4
2 | 5
0 | 6
但是当我运行它时,我得到值x = -8和y = 10
int x = 10;
int y = 1;
while ((y != 10) && ((x / y) >= 0))
{
x -= 2;
y += 1;
}
System.out.println("x: " + x);
System.out.println("y: " + x);
如果while语句中的第二个语句大于或等于,则它将转到-2和7,这应该使语句的第二部分为false并且循环将停止运行。但事实并非如此。
答案 0 :(得分:3)
while语句中的第二个语句大于或 相等,它会到-2和7,这应该是第二部分 声明为false,循环将停止运行。
-2 / 7
使用整数运算等于零。
试试这个:
System.out.println((-2/7));
提示:现在花些时间了解如何在IDE中运行代码并在调试器中逐步执行代码。
答案 1 :(得分:0)
这很简单,你只想要x大于零的条件而且它就是这样的:)
int x = 10;
int y = 1;
while ((y != 10) && (x > 0)) {
x -= 2;
y += 1;
}
System.out.println("x: " + x);
System.out.println("y: " + y);
输出:
x: 0
y: 6
PS:你在这里发布的代码有错误,你打印变量x
两次
System.out.println("x: " + x);
System.out.println("y: " + x);
应该是:
System.out.println("x: " + x);
System.out.println("y: " + y);
另请注意以下事项:
由于在Java中划分规则,这种情况不起作用。如果您将两个integers
分开,则结果始终为integer
向下舍入!
如果(x / y) >= 0
小于x
,则y
会返回true。
要有这种划分的工作示例,你必须将例如double除以整数,它应该看起来像这样
((double) x / y) >= 0
答案 2 :(得分:0)
这是因为>=
中的(x / y) >= 0)
。 -2/7产生0并且它通过了条件。
它离开了(y != 10)
的循环,因此y的值是10,同时x的值已经变为-8。