我导入 java.math.*; 但是java仍然找不到符号sqrt(double)...?

Ada*_*les 0 java recursion prime-factoring

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)); 
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误(我很困惑):

错误:找不到符号 (double i=0; i <= Math.sqrt(NumToFactor); i++)

Sea*_*wen 5

从来没有必要导入java.lang类。java.math不包含Mathjava.lang做。

您的编译错误并没有说明您丢失了Math。相反,您在此代码中还有许多其他问题,首先是您有一个void返回类型,类型看起来像是您可能试图声明为构造函数但未(已编辑)的内容。构造函数没有返回类型。

  • 那不是构造函数——这是一个碰巧共享相同名称的 void 方法。可怕,但有效。(虽然还有很多*其他*问题......) (3认同)