import java.lang.*;
import java.math.*;
class Factor
{
public void Factor(double NumToFactor)
{
for (double i=0; i <= Math.sqrt(NumToFactor); i++)
{
if (NumToFactor%i == 0)
{
Factor(NumToFactor/i);
System.out.println(i + "*");
}
}
}
}
public class PrimeFactorization
{
public static void main(String[] args)
{
System.out.println(Factor(120.0));
}
}
我收到以下错误(我很困惑):
错误:找不到符号 for(double i = 0; i&lt; = Math.sqrt(NumToFactor); i ++)
答案 0 :(得分:4)
永远不必导入java.lang
类。 java.math
不包含Math
; java.lang
确实如此。
您的编译错误并未表示您遗漏Math
。相反,您在此代码中还有许多其他问题,首先是您在上有一个void
返回类型的事实,您可能会尝试将其声明为构造函数但不是(已编辑)。构造函数没有返回类型。
答案 1 :(得分:0)
此代码存在许多问题。首先,即使修复了代码,它也会进入infinte循环。递归逻辑不正确。这是我做的快速修复,因此您可以调用此方法。但是,来自Factor类的Factor()
方法需要用逻辑来检查以打破无限循环,即。调用Factor()
的{{1}}方法,它没有结束。
看问题不是Math.sqrt(),不是因为构造函数。逻辑和方法都没有返回类型。
Factor()