我不明白为什么这样做

时间:2017-08-25 14:53:54

标签: java

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可以是负数是显而易见的,但为什么可以呢。

编辑:我自己编写了这段代码,所以我知道为什么它没有*。这不是问题。我可以为x输入5,为y输入-5,我得到-25。但为什么?每次他再添加一次x到z y减去1。但是在第5次停止之后。

2 个答案:

答案 0 :(得分:1)

如果你把" z"在你明白的时候打印。

此代码溢出。达到int允许的最大值,然后从那里再次减少

答案 1 :(得分:0)

此代码会产生多个总和。所以它可以将数字加起来2,3倍,这就是它如何做2 * 3.

y可以是负数,因为if是看到!=而不是0,而不是<比0。