【发布时间】:2015-02-12 00:20:22
【问题描述】:
这是我目前所拥有的。这个想法是它应该增加 n 直到 n^3 小于 12000,并在 12k 以下的最大整数处打印 n。
public static void main(String[] args) {
int n = 0;
int nCubed = (int) (Math.pow(n, 3));
while (nCubed < 12000) {
n++;
}
System.out.println("The highest integer below 12000 is " +n);
}
}
【问题讨论】:
-
我建议使用
n*n*n而不是(int)(Math.pow(n,3))。Math.pow适用于浮点计算(尽管我会使用n*n而不是Math.pow(n,2)甚至用于浮点数)但它对于整数不是最理想的,除非您期望整数溢出,在这种情况下,转换回int是不是一个好主意。 (显然在这种情况下,整数溢出不会发生。) -
这个问题没有数学解决方案吗?听起来应该有。例如。只有 22 个小于 12000 的整数立方数。因此,保留所有立方体的数组,然后遍历它们检查它们是否低于您的目标,而不是每次都计算立方体。
-
数学解决方案是:
int n = (int) Math.pow(12000, 1.0/3);但要修复循环解决方案,您需要在循环内更新 nCubed(当前始终为 0,您的循环不会终止。)
标签: java algorithm loops while-loop integer