我创建了这个方法,使用函数b ^ 2-4ac
找到判别法public class Discriminant {
public double Disc (double a, double b, double c){
double disc;
disc = Math.pow(b, 2) - 4*a*c;
return disc ;
}
}
然后我做了另一种方法来找到函数的所有正根
public class PlusRoot {
public double plusRoot (double a, double b, double c){
double proot;
proot = -b + Math.sqrt(disc)/ 2*a;
return proot;
}
}
但它没有用,因为它说光盘无法解析为变量,两种方法都在同一个包中......我该如何解决这个问题?
答案 0 :(得分:0)
你已经在两个不同的类中创建了一个构造函数和一个方法,并且你没有'声明它们static
- 这意味着要调用它们,你需要先创建适当的实例。
相反,将构造函数设为方法,将它们标记为static
并将它们移动到同一个类中,最好与main()
方法在同一个类中;然后它们将位于相同的命名空间中,您可以通过它们的名称来调用它们。
答案 1 :(得分:0)
“我该如何解决这个问题?” < - 你试过修理它吗???
你的程序中有主要方法吗?
public static void main (String args[]) {
// stuff here
}
如果没有,那么你甚至需要这个来运行程序。
有几种方法可以解决这个问题。但首先我建议重新使用你的方法...... Java方法应该从小写开始!
首先:
private Discriminent disc;
public double plusRoot (double a, double b, double c){
disc = new Discriminent();
double proot;
proot = -b + Math.sqrt(disc.Disk(variables here))/ 2*a;
return proot;
}
第二:
public static void main(STring args[]) {
Discriminent disc = new Discriminent();
double x = disc.Disck(values here);
PlustRoot pr = new PlusRoot(disc);
}
and inside your PlusRoot you can have a constructor which takes disc as parameter
public class PlusRoot {
public double disc;
public PlusRoot(double disc) {
this.disc = disc;
}
// and then you can call disc within that instance by doing 'this.disc';
so: proot = -b + Math.sqrt(this.disc)/ 2*a;
}
还有更多方法可以解决这个问题:)
答案 2 :(得分:0)
错误的原因是您没有变量disc
。您需要在使用之前对其进行初始化。你需要一个像
double disc = 0.0;
但是,我猜你的意图是使用Disc
方法的返回值。现在你的两个课程如何设置。您必须实例化Discriminant对象,然后在使用变量Disc
之前调用方法disc
方法。
Discriminant discriminant = new Discriminant();
double disc = discriminant.Disc(a, b, c); //or whatever 3 doubles you wish to use.
查看java中的不同范围变量以更好地理解此问题。