Java的二次公式布局

Java的二次公式布局,java,Java,我在NAN和Real roots的位置上遇到了问题。以下是我的结果截图: 这就是我想做的: 提示用户输入二次方程的系数,并以标准形式打印出方程:ax^2+bx+c=0(2分) 计算方程的根。如果a=0,则打印一条消息,指示该方程不是有效的二次方程。否则,根据二次公式的判别式计算根 当判别式为非负时,打印出实根。注意:先打印较小的根。当判别式为负时,分别计算复数根的实部和虚部,然后以标准复数“a+bi”形式打印根。注意:先用+bi打印复数根。(8个临时秘书处) 公共类{ 公共静态void ma

我在NAN和Real roots的位置上遇到了问题。以下是我的结果截图:

这就是我想做的:

  • 提示用户输入二次方程的系数,并以标准形式打印出方程:ax^2+bx+c=0(2分)

  • 计算方程的根。如果
    a=0
    ,则打印一条消息,指示该方程不是有效的二次方程。否则,根据二次公式的判别式计算根

  • 当判别式为非负时,打印出实根。注意:先打印较小的根。当判别式为负时,分别计算复数根的实部和虚部,然后以标准复数“a+bi”形式打印根。注意:先用+bi打印复数根。(8个临时秘书处)

    公共类{
    公共静态void main(字符串[]args){
    java.util.Scanner输入=新的java.util.Scanner(System.in);
    double a=input.nextDouble();
    double b=input.nextDouble();
    double c=input.nextDouble();
    双判别式=数学功率(b,2)-4*a*c;
    System.out.println(“a:”);
    System.out.println(“b:”);
    System.out.println(“c:”);
    系统输出println(“方程:“+a+”x^2+”+b+”x+“+c+”=0”);
    //如果a=0,则打印一条消息,指示该方程式不是有效的二次方程式。
    如果(a==0){
    System.out.println(“无效的二次方程”);
    }
    //当判别式为非负时,打印出实根。
    如果(判别式>0){
    System.out.println(“实根:”;
    双根1=(-b+数学功率(判别式,0.5))/(2*a);
    双根2=(-b-数学功率(判别式,0.5))/(2*a);
    System.out.println(“x=“+root2”);
    System.out.println(“x=“+root1”);
    }
    //当判别式为负时,分别计算复数根的实部和虚部。
    if(判别式<0){
    System.out.println(“复数根:”);
    双r1=-b/(2*a);
    双r2=数学sqrt(-discriminant)/(2*a);
    System.out.println(“x=“+r1+”+“+r2+”i”);
    System.out.println(“x=“+r1+”-“+r2+”i”);
    }   
    }
    }
    

当这或那是要遵循的条件时,使用一个
else
,非负应包括0,如下所示:

if (a == 0) {
    System.out.println("Invalid quadratic equation.");
} else if (discriminant >= 0) { // non-negative
    System.out.println("Real root(s):");
    ...
} else  {
    System.out.println("Complex roots:");
        ...

当这或那是要遵循的条件时,使用
else
,非负应包括0,如下所示:

if (a == 0) {
    System.out.println("Invalid quadratic equation.");
} else if (discriminant >= 0) { // non-negative
    System.out.println("Real root(s):");
    ...
} else  {
    System.out.println("Complex roots:");
        ...

第一个问题:即使方程不是二次方程(
a==0
),也要继续计算和显示根

第二个问题:您排除了
discriminant==0
的情况,方法是取
discriminant<0
表示复数根,取
discriminant>0
表示实根

处理这两个问题的正确逻辑是:

if (a == 0) {
    // it's not a quadratic: give message 
} 
else {
    if (discriminant < 0) {
        // compute and display complex roots
    } 
    else { // disciminant is zero or greater...
        // compute and display real roots
    }
}
if(a==0){
//这不是一个二次型:传递信息
} 
否则{
if(判别式<0){
//计算并显示复数根
} 
否则{//disciminant为零或更大。。。
//计算并显示实根
}
}

第一个问题:即使方程不是二次方程(
a==0
),也要继续计算和显示根

第二个问题:您排除了
discriminant==0
的情况,方法是取
discriminant<0
表示复数根,取
discriminant>0
表示实根

处理这两个问题的正确逻辑是:

if (a == 0) {
    // it's not a quadratic: give message 
} 
else {
    if (discriminant < 0) {
        // compute and display complex roots
    } 
    else { // disciminant is zero or greater...
        // compute and display real roots
    }
}
if(a==0){
//这不是一个二次型:传递信息
} 
否则{
if(判别式<0){
//计算并显示复数根
} 
否则{//disciminant为零或更大。。。
//计算并显示实根
}
}

谢谢,将其更改为“else if(discriminant>=0){”解决了问题。如果我不处理最后一句话,这两种说法都可以!Serang Cool,如果可以接受它作为答案的话。:)谢谢,将其更改为“else if(discriminant>=0){”解决了。如果我不去管最后一句话,这两句话都可以!@Serang Cool,如果这有助于接受它作为答案的话。:)