Java 无法调用其他类

Java 无法调用其他类,java,class,compilation,call,Java,Class,Compilation,Call,我正在制作一个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

我正在制作一个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
s构造函数,但是在您发布的
Receiver
的代码中没有这样的构造函数


此外,您还可以尝试将类
公开

您需要同时编译这两个文件,或者确保编译器已传递对接收方类文件的引用。此外,接收器中的构造函数不接受字符串参数

一般来说,将源文件放在包(目录)中被认为是一种良好的做法——这样可以在项目变大时更容易地组织它们。例如,在您的情况下,您可以选择一个包名,如“com.myapp.root”,并将两个源文件放在一个目录中,如“myFirstProject/src/com/myapp/root”。然后从“myFirstProject”目录中,您应该能够调用“javacsrc”来编译源目录中的所有内容


注意,我还没有找到构造函数
公共接收器(字符串arg)
,您正在这样使用它,是不是遗漏了它?

如果您是通过命令行自己编译这些文件,请确保执行以下步骤:

使用这些类创建包

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

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

从当前位置按包名运行Call类

java com.mypackage.app.Call

查看java中的
package
import
关键字。您使用的是
IDE
?像Eclipse或NetBeans?这看起来确实像是一个导入问题,尽管如果没有更多的信息就无法确定。但是我要指出的是,
double root1=r.Root
双root2=r.root2也不会编译。您必须使用实际参数调用
Root
Root2
。该构造函数是在哪里定义的?(".")
javac -d . Call.java Receiver.java
java com.mypackage.app.Call