java - 我不明白为什么这有效

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

编辑:我自己编写了这段代码,所以我知道为什么它在没有 * 的情况下也能工作。这不是问题。我可以为 x 输入 5,为 y 输入 -5,然后得到 -25。但为什么?每次他将 x 与 z 相加一次,y 就会减少 1。但第五次之后就停止了。

最佳答案

如果你把“z”打印放在 while 中你就会明白。

此代码会导致溢出。达到 int 允许的最大值并从那里再次减小

关于java - 我不明白为什么这有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45884156/

相关文章:

java - 将其他 JVM 语言与 Tomcat servlet 容器一起使用

java - 枚举类内存泄漏

java - 带有 Guava 集合的线程安全 HashSet

java - 在jsp中打印 session 属性

java - 是否有用于将文档从html转换为pdf的java库?

java - 使用 BufferedReader 将文件内容存储在 Integer 的 ArrayList 中

java - Kotlin 中 ByteArray 和 Array<Byte> 的区别

java - 如何运行用户创建的类文件而不是编译器创建的类文件

java - 可以使用什么过程来比较两个单独列表中的元素?

java - 有什么方法可以在 tomcat conf 而不是 WEB-INF/web.xml 中设置可分发元素?