![](/img/trans.png)
[英]How do i create/modify the contents of a file before i create it in a Java program i have made?
[英]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.