public static void main(String args[]){
Scanner s = new Scanner(System.in);
int x;
int y;
int z = 0;
x = s.nextInt();
y = s.nextInt();
while(y != 0){
z += x;
y--;
}
System.out.println(z);
}
这就是全部。 此代码计算 x*y 但不使用 *。 这只是一个(任务?)有人告诉我的。我的问题是为什么这适用于负数。 x 可以为负数是显而易见的,但为什么 y 可以为负数。
编辑:我自己编写了这段代码,所以我知道为什么它在没有 * 的情况下也能工作。这不是问题。我可以为 x 输入 5,为 y 输入 -5,然后得到 -25。但为什么?每次他将 x 与 z 相加一次,y 就会减少 1。但第五次之后就停止了。
最佳答案
如果你把“z”打印放在 while 中你就会明白。
此代码会导致溢出。达到 int 允许的最大值并从那里再次减小
关于java - 我不明白为什么这有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45884156/