Java 类无法正确交互

标签 java class classpath

我有两个 Java 类文件:primegenprimecheck 位于同一目录中。 primegenprimecheck 调用公共(public)静态函数。 primecheck 编译良好。

但是,我在 primegen 中收到以下编译错误:

primegen.java:31: cannot find symbol
symbol  : variable primecheck
location: class primegen
          } while (!primecheck.prime(primeCandidate));
                ^

Java 不应该检查同一目录中的其他(已编译的)类吗? Java 是否存在小写字母 primecheck 的问题(例如,它是否将 primecheck 视为变量而不是类?)?

更新完整代码

primegen 代码:

import java.math.BigInteger;
import java.util.Random;

public class primegen
{

    public static void main(String args[])
    {
        try
        {
            int numBits = Integer.parseInt(args[0].trim());
            System.out.println(generatePrime(numBits));
        }
        catch (Exception e)
        {
            System.out.println("You must enter a positive integer number of bits.");
        }
    }

    private static BigInteger generatePrime(int numBits) throws Exception
    {
        if (numBits < 1)
            throw new Exception("You must enter a positive integer number of bits.");

        BigInteger primeCandidate;
        Random rand = new Random();

        do
        {
            primeCandidate = new BigInteger(numBits, rand);
        } while (!primecheck.prime(primeCandidate));

        return primeCandidate;
    }

}

primecheck 代码:

import java.math.BigInteger;
import java.util.Random;

public class primecheck
{

    public static void main(String args[])
    {
        try
        {
            BigInteger primeCandidate = new BigInteger(args[0].trim());
            if (prime(primeCandidate))
                System.out.println("True");
            else
                System.out.println("False");
        }
        catch (Exception e)
        {
            System.out.println("You must enter a positive integer.");
        }
    }

    public static boolean prime(BigInteger n) throws Exception
    {
        if (n.compareTo(BigInteger.ZERO) == -1)
            throw new Exception("You must enter a positive integer.");
        else if (n.equals(BigInteger.ZERO) || n.equals(BigInteger.ONE))
            return false;

        int maxIterations = 1000;
        BigInteger a;

        for (int i = 0; i < maxIterations; i++)
        {
            a = randomBase(n);
            a = a.modPow(n.subtract(BigInteger.ONE), n);

            if (!a.equals(BigInteger.ONE))
                return false;
        }

        return true;
    }

    private static BigInteger randomBase(BigInteger n)
    {
        Random rand = new Random(); 
        BigInteger a;

        do
        {
            a = new BigInteger(n.bitLength(), rand);
        } while ( !(BigInteger.ONE.compareTo(a) <= 0 && a.compareTo(n) < 0) );

        return a;
    }

}

最佳答案

Java 不关心名称是全小写还是大写。这些只是命名约定(Java区分大小写,但不会强制执行任何特定的命名约定)。

编辑:(经过几次迭代:)

您发布的代码可以正常编译。问题显然出在其他地方(javac 命令行参数、类路径...)

关于Java 类无法正确交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4045258/

相关文章:

java - 为什么 TwitterLoginButton 在 Android 上不会膨胀?

c++ - 将类回调函数分配给结构?

c++ - Ptr<Node> a = CreateObject <Node>();

java - 打包类的 NoClassDefFoundError

eclipse 插件修改启动配置文件

hadoop - 如何在不重启hadoop集群的情况下将jar添加到类路径中并生效?

java - Scala:在 Scala 中使用带有子类的 Java 构造函数

java - 我如何在 Java 中解析这个 JSON?

java - 在 Java 中使用 Scanner 类计算 CSV 文件的平均值

iPhone:SDK 中应包含的有用类或扩展子类(类别)