我必须创建一个代码,显示前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();
}
}
答案 0 :(得分:1)
整数溢出。请参阅wiki,具体来说:
在某些情况下,程序可以假设变量 始终包含正值。如果变量有符号整数 类型,溢出可以导致其值包装并变为负数。 这种溢出违反了该计划的假设,并可能导致 意想不到的行为。