为什么我的数字在前100000个方格的结果中显示为负数?

时间:2014-10-25 22:35:48

标签: 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();
    }
}

1 个答案:

答案 0 :(得分:1)

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

  

在某些情况下,程序可以假设变量   始终包含正值。如果变量有符号整数   类型,溢出可以导致其值包装并变为负数。   这种溢出违反了该计划的假设,并可能导致   意想不到的行为。