1

我希望循环在 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,并且循环将停止运行。但事实并非如此。

4

3 回答 3

3

当 while 语句中的第二个语句大于或等于时,它将变为 -2 和 7,这应该使语句的第二部分为 false,并且循环将停止运行。

-2 / 7用整数算术等于零。

试试这个:

System.out.println((-2/7));

提示:现在就花时间学习如何在IDE中运行代码并在调试器中逐步执行。

于 2013-10-23T17:58:20.890 回答
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返回 true 。xy

要使用这种除法的工作示例,您必须将例如 double 与整数相除,它应该看起来像这样

((double) x / y) >= 0
于 2013-10-23T17:57:33.287 回答
0

这是因为>=(x / y) >= 0). -2/7 产生 0 并且它通过了条件。

它脱离了循环(y != 10),因此 y 的值为 10,同时 x 的值变为 -8。

于 2013-10-23T17:59:56.603 回答