我如何使用我制作的方法? JAVA

时间:2015-11-18 21:43:44

标签: java methods

我创建了这个方法,使用函数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;
    }
}

但它没有用,因为它说光盘无法解析为变量,两种方法都在同一个包中......我该如何解决这个问题?

3 个答案:

答案 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中的不同范围变量以更好地理解此问题。