我的工作是创建一个包含四个类方法的二次类。
一个方法是plusRoot(),当二次公式使用加号(-b + squarerootof D)/ 2a
时返回根另一个是minusRoot(),当二次公式使用减号时返回根(-b-squarerootof D)/ 2a
返回(b ^ 2 - 4ac)
的判别方法程序从main方法开始,它向用户询问常量a,b和c,然后使用所有其他方法输出根。这就是我创造的。
package chapter3Codes;
import java.util.Scanner;
public class QuadraticClass {
static double d;
static double mroot;
static double proot;
public final static void main(String[] args) {
System.out.println("Enter constants a, b, and c");
Scanner scn = new Scanner (System.in);
a = scn.nextDouble();
Scanner scn1 = new Scanner (System.in);
b = scn1.nextDouble();
Scanner scn2 = new Scanner (System.in);
c = scn2.nextDouble();
plusRoot proot = new plusRoot();
minusRoot mroot = new minusRoot();
System.out.println ("The roots are" + proot + "and" mroot);
}
public static double plusRoot (double a, double b, double c){
double proot;
proot = -b + Math.sqrt(d)/ 2*a;
return proot ;
}
public static double minusRoot (double a, double b, double c){
double mroot;
mroot = -b - Math.sqrt(d)/ 2*a;
return mroot ;
}
public static double Disc (double a, double b, double c){
d = Math.pow(b, 2) - 4*a*c;
return d ;
}
}
我收到的错误如a,b和c无法解析为变量而plusRoot和minusRoot无法解析为某个类型。我做错了什么?
答案 0 :(得分:0)
在java中,您必须使用类型声明所有变量。 a
,b
,c
,plusRoot
和minusRoot
未定义。添加,
double a, b, c, plusRoot, minusRoot;
在使用之前。
答案 1 :(得分:0)
您想在main方法中指定a,b和c的类型。这应该有效:
package chapter3Codes;
import java.util.Scanner;
public class QuadraticClass {
static double d;
static double mroot;
static double proot;
public final static void main(String[] args) {
System.out.println("Enter constants a, b, and c");
Scanner scn = new Scanner (System.in);
// specifying that type is double
double a = scn.nextDouble();
double b = scn.nextDouble();
double c = scn.nextDouble();
double proot = plusRoot(a,b,c);
double mroot = minusRoot(a,b,c);
System.out.println ("The roots are" + proot + "and" + mroot);
}
public static double plusRoot (double a, double b, double c){
double proot;
proot = -b + Math.sqrt(d)/ 2*a;
return proot ;
}
public static double minusRoot (double a, double b, double c){
double mroot;
mroot = -b - Math.sqrt(d)/ 2*a;
return mroot ;
}
public static double Disc (double a, double b, double c){
d = Math.pow(b, 2) - 4*a*c;
return d ;
}
}
其次,您尝试使用已创建的方法创建新对象。 您无法从方法创建对象,必须使用类创建。 new
关键字表示创建新对象,这不是您想要做的。我现在不打算解释如何创建新的类文件(学习基础知识here),但是你想要调用方法的方式是这样的:
// double because methods are returning a double
double proot = plusRoot(a, b, c); // calls the method and passes a,b,c as parameters
double mroot = minusRoot(a, b, c);
此外,每次要使用扫描仪时都不需要创建新的扫描仪对象。您需要初始化一次Scanner scn = new Scanner (System.in);
,每次要使用扫描仪时,都可以调用scn.nextDouble();
。无需创建scn1
和scn2
。