我正在制作一个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
答案 0 :(得分:3)
您正在使用String参数调用Receiver
构造函数,但在您发布的Receiver
代码中没有这样的构造函数。
此外,您可以尝试制作课程public
。
答案 1 :(得分:2)
请注意,我还没有找到构造函数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
答案 2 :(得分: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