java - 为什么我的数字在前 100000 个方格中的结果是负数?

标签 java loops while-loop

我必须创建一个代码来显示前 100000 个数字的平方,并测量程序显示每个数字所花费的时间。在我的结果中,数字有时会变为负数,然后再次变为正数。为什么是这样?我应该如何更改我的代码以使我的结果不是负面的? (前 1000 个平方数或 10000 不会发生这种情况)。

package assignment.pkg5;

import java.util.Calendar;

public class LoopsLab1000001b {
    public static void main(String[] args) {
        long time_start, time_finish;
        time_start = time();

        int count = 1;
        while (count <= 100000) {
            System.out.println(count * count);
            count++;
        }

        time_finish = time();

        System.out.println(time_finish - time_start + " milli seconds");

    }

    public static long time() {
        Calendar cal = Calendar.getInstance();
        return cal.getTimeInMillis();
    }
}

最佳答案

整数溢出。参见 wiki ,具体来说:

In some situations, a program may make the assumption that a variable always contains a positive value. If the variable has a signed integer type, an overflow can cause its value to wrap and become negative. This overflow violates the program's assumption and may lead to unintended behavior.

关于java - 为什么我的数字在前 100000 个方格中的结果是负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26567974/

相关文章:

java - 插入数据库时​​出错 : ERROR: syntax error at or near "$1"

C 程序 : Can anyone explain the program ? [循环变量概念]

r - 同时循环遍历 R 中的两个列表

php - 像 Facebook 这样使用 PHP 的社交网站如何在不使服务器重载的情况下让脚本检查新闻源?

r - 掷骰子数直到达到停止值

mysql - mysql 中 while 出错

java - 如果值不存在则更新或检查 DynamoDBMapper 中的条件

Java:for循环似乎没有在我的方法中迭代

Java - 将文本拆分为没有明显分隔符的数组

javascript - 在 Javascript while 循环中使用 'undefined' 作为标记是否安全?