为什么我不能打印最大长值?
问题描述:
我正在编译一个Java程序,使用for循环来找出long的最大值。但是,当我运行该程序时没有打印任何内容。为什么?为什么我不能打印最大长值?
这里是我的代码:
class LongMaxMin {
public static void main(String args[]) {
long i = 0L;
long result = 0L;
for (; ;) {
result = i++;
if (i<0)
break;
}
System.out.println("The biggest integer:" + result);
}
答
主要是因为时间。
A long
将具有约为〜9.22百分位的max。你从零开始增加。这意味着你需要经过9个quintillion循环,才能包装和打破。我试图在我的javascript控制台中运行20亿次操作,并在强制退出之前超时几分钟。
如果你坐在那里,让它运行足够长的时间,你会得到你的输出。另外,开始i
在接近最大的东西,如9,223,372,036,854,700,000,看看它是否仍然给你相同的问题。在Java 8中,允许使用adding underscore to numeric literals。初始化i
到类似9_223_372_036_854_700_000L
会给你一些更及时的方式。
最大长度非常高,在9.223372e+18
。 For specifics,9,223,372,036,854,775,807
是有问题的数字。这也有助于整个“这个作品,它会花太多时间”的理论。
答
我认为你的逻辑是正确的,只是需要很多时间来达到这个价值。
最大长值可以保持是Long.MAX_value是9223372036854775807L
加快逻辑,I修改为下面的程序,得到了预期的结果。
public static void main(String args[]) {
long i = 9223372036854775806L;
long result = 0L;
for (; ;) {
result = i++;
if (i<0) {
System.out.println("result"+result);
System.out.println("i"+i);
break;
}
}
System.out.println("The biggest integer: is" + result);
}
输出:
result9223372036854775807 I-9223372036854775808 最大的整数:is9223372036854775807
结果有它改变它的最小值之后它所能容纳的最大值。
因为它永远运行。 –
@JamesKPolk plus1 –
它的工作原理,它只需要很长的时间;) – Cinnam