繁体   English   中英

如何使用自己制作的方法? 爪哇

[英]How do I use a method I have made? JAVA

我已经创建了使用函数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;
    }
}

但这是行不通的,因为它说光盘无法解析为变量,两种方法都在同一个程序包中。如何解决此问题?

您已经在两个不同的类中创建了一个构造函数和一个方法,并且尚未将它们声明为static -这意味着要调用它们,首先需要创建适当的实例。

取而代之的是,使构造函数成为一个方法,将它们都标记为static然后将它们移到同一类中,最好是与main()方法在同一类中; 那么它们将位于同一个命名空间中,您可以通过它们的名称来调用它们。

“我该如何解决?” <-您是否尝试过修复它:)?

您的程序中有主要方法吗?

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;


}

还有许多其他方法可以解决这个问题:)

错误的原因是您没有可变disc 您需要先对其进行初始化,然后再使用它。 您将需要一条线

double disc = 0.0;

但是,我还猜测您的意图是使用Disc方法的返回值。 现在介绍如何设置两个班级。 在使用可变disc之前,您必须实例化Discriminant对象,然后调用Disc方法。

Discriminant discriminant = new Discriminant();
double disc = discriminant.Disc(a, b, c); //or whatever 3 doubles you wish to use.

查看Java中不同的作用域变量,以更好地理解此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM