Java 这个二次方程类有问题吗

Java 这个二次方程类有问题吗,java,Java,我需要编写一个代码来解一个二次方程,并在没有解的情况下显示一条消息,当我运行程序时,无论我使用什么数字,我总是得到第三个if语句,其中没有解 public class Quadratic { private double a, b, c, x, x1, x2; public Quadratic() { a = b = c = 1; } public Quadratic(double a1, double b1, double c1) {

我需要编写一个代码来解一个二次方程,并在没有解的情况下显示一条消息,当我运行程序时,无论我使用什么数字,我总是得到第三个if语句,其中没有解

public class Quadratic {



private double a, b, c, x, x1, x2;

    public Quadratic() {
        a = b = c = 1;
    }

    public Quadratic(double a1, double b1, double c1) {
        a = a1;
        b = b1;
        c = c1;
    }

    public double getA() {
        return a;
    }

    public double getB() {
        return b;
    }

    public double getC() {
        return c;
    }

    public void setA(double a2) {
        a = a2;
    }

    public void setB(double b2) {
        b = b2;
    }

    public void setC(double c2) {
        c = c2;
    }

    public void setQuadratic(double a3, double b3, double c3) {
        a = a3;
        b = b3;
        c = c3;
    }

    public void roots() {
        System.out.println(a + "x^2 + " + b + "x + " + c + " = 0");

        if (Math.pow(b, 2) - 4 * a * c == 0) {
            System.out.println("Solution: (" + oneSolution() + ")");
        }

        if (Math.pow(b, 2) - 4 * a * c > 0) {
            System.out.println("Solutions: (" + solution1() + "," + solution2() + ")");
        }

        if (Math.pow(b, 2) - 4 * a * c < 0) {
            System.out.println("Solutions: There are no solutions");
        }

    }

    public double oneSolution() {
        x = -b / 2 * a;
        return x;
    }

    public double solution1() {
        x1 = (-b + (Math.sqrt(Math.pow(b, 2) - 4 * a * c))) / (2 * a);
        return x1;
    }

    public double solution2() {
        x2 = (-b - (Math.sqrt(Math.pow(b, 2) - 4 * a * c))) / (2 * a);
        return x2;
    }

}
公共类{
专用双a、b、c、x、x1、x2;
公共二次方(){
a=b=c=1;
}
公共二次型(双a1、双b1、双c1){
a=a1;
b=b1;
c=c1;
}
公共双getA(){
返回a;
}
公共双getB(){
返回b;
}
公共双getC(){
返回c;
}
公共无效setA(双a2){
a=a2;
}
公共空间设置(双b2){
b=b2;
}
国家经济贸易委员会(双c2){
c=c2;
}
公共空间(双a3、双b3、双c3){
a=a3;
b=b3;
c=c3;
}
公共关系{
系统输出打印项次(a+“x^2+”+b+“x+”+c+”=0);
如果(数学功率(b,2)-4*a*c==0){
System.out.println(“解决方案:(“+oneSolution()+”);
}
如果(数学功率(b,2)-4*a*c>0){
System.out.println(“解决方案:(“+solution1()+”,“+solution2()+”);
}
if(数学功率(b,2)-4*a*c<0){
System.out.println(“解决方案:没有解决方案”);
}
}
公共双元解决方案(){
x=-b/2*a;
返回x;
}
公共双重解决方案1(){
x1=(-b+(数学sqrt(数学功率(b,2)-4*a*c))/(2*a);
返回x1;
}
公共双重解决方案2(){
x2=(-b-(数学sqrt(数学功率(b,2)-4*a*c))/(2*a);
返回x2;
}
}

尝试使用2。或2.0而不是2:2.0、4.0等。。。 如果这不起作用,请尝试2.0d等,或者声明您的常量:double two=2.0

也许这能让它工作,我不确定java处理,例如double/integer。。因此,您最好执行double/double,您的代码似乎可以工作:-)

我上了你的课,做了以下几件事:

类测试{
公共静态void main(字符串[]args){
二次型q=新二次型(1.0,2.0,-35.0);
q、 根();
}
}
结果是:

1.0x^2 + 2.0x + -35.0 = 0
Solutions: (5.0,-7.0)

这是正确的

对于
a
b
c
,您的测试用例值是多少?Java将文本转换为声明的变量类型,因此我认为情况并非如此。