创建包含四个类方法的二次类 - Java

时间:2015-11-18 23:33:18

标签: java class quadratic

我的工作是创建一个包含四个类方法的二次类。

一个方法是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无法解析为某个类型。我做错了什么?

2 个答案:

答案 0 :(得分:0)

在java中,您必须使用类型声明所有变量。 abcplusRootminusRoot未定义。添加,

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();。无需创建scn1scn2