-1

我正在制作一个 Java 程序,它可以通过给出 a、b 和 c 来使用二次方程求解根。

这是主要代码:

//main file

class Call
{
       public static void main(String args [])
    {
            double a=Double.parseDouble(args[0]);
            double b=Double.parseDouble(args[1]);
            double c=Double.parseDouble(args[3]);

            Receiver r = new Receiver(".");
            if (r.determine(a,b,c)=true)
            {
                    double root1=r.Root;
                    double root2=r.Root2;
                    System.out.println("The first root is +root1");
                    System.out.println("The second root is +root2");


            }
            else
            {
                    System.out.println("Not a number");
            }
    }
 }

现在这是我试图打电话但不能打电话的课程。

   class Receiver
    {
    public boolean determine(double a, double b, double c)
    {
            double value=b*b-4*a*c;
                    if (value<0)
                            return false;
                    else
                            return true;
    }

    public double Root(double a, double b, double c)
    {
            double value=b*b-4*a*c;
            double root=(-b+ Math.sqrt(value))/(2*a);
            return root;
    }

    public double Root2(double a, double b, double c)
    {
            double value=b*b-4*a*c;
            double root2=(-b- Math.sqrt(value))/(2*a);
            return root2;
    }
    }

我确保我已经编译了 Receiver.java。但是当我编译 Call.java 时,我得到了这个错误:

Call.java:14:error:cannot find symbol
      Receiver r= new Receiver();
      symbol: class Receiver
      location: class Call
4

3 回答 3

3

您正在Receiver使用 String 参数调用 s 构造函数,但是在您Receiver发布的代码中没有这样的构造函数。

另外,您可以尝试制作课程public

于 2012-07-01T07:27:48.877 回答
2

请注意,我还没有找到 constructor public Receiver(String arg),而您正在这样使用它,您不是错过了吗?

如果您从命令行自行编译,请确保,这些步骤:

用这些类创建包

// top of Call.java
package com.mypackage.app;

// top of Receiver.java
package com.mypackage.app;

编译这些文件,以便在类结构中创建包
(这将在当前位置创建文件夹,如/com/mypackage/app/

javac -d . Call.java Receiver.java

通过它的包名从当前位置运行 Call 类

java com.mypackage.app.Call
于 2012-07-01T07:35:29.943 回答
0

您需要同时编译这两个文件,或者确保编译器已通过对 Receiver 类文件的引用。此外,Receiver 中的构造函数不采用字符串参数。

通常,将源文件放在包(目录)中被认为是一种很好的做法 - 随着项目变得越来越大,它可以更容易地组织它们。例如,在您的情况下,您可以选择像“com.myapp.roots”这样的包名称,并将两个源文件放在像“myFirstProject/src/com/myapp/roots”这样的目录中。然后从“myFirstProject”目录你应该能够调用“javac src”来编译源目录中的所有内容

http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/javac.html

于 2012-07-01T07:33:11.567 回答