小弟最近在搞这个java的学习,刚入门就被这个一元二次方程K倒了。。
各位帮忙看看吧,编了1个小时了,还是没编译出来,错误无限要求:
/*
*编写一个程序求一元二次方程ax2+bx+c=0的解,a、b、c从键盘输入要求讨论下述情况:
* b*b-4*a*c=0,有两个相等实根
* b*b-4*a*c>0,有两个不等实根
* b*b-4*a*c<0,无实根
* a=0,不是二次方程式
*/当符合b*b-4*a*c>0,要求能正常输出2个值。

解决方案 »

  1.   

    类java.awt.geom.QuadCurve2D的solveQuadratic方法
      

  2.   

    import java.util.Scanner;
    public class jie {
    public static void main(String [] args){
    double a;
    double b;
    double c;
    boolean flag=true;
    Scanner input=new Scanner(System.in);
    System.out.print("请输入a的值:");
    a=input.nextDouble();
    System.out.print("请输入b的值:");
    b=input.nextDouble();
    System.out.print("请输入c的值:");
    c=input.nextDouble();
    if(a==0){
    System.out.println("此方程不是二次方程式");
    flag=false;
    }
    double d=b*b-4*a*c;
    if(flag){
    if(d>0){
    System.out.println("有两个不等的实根");
    double x1=(-b+Math.sqrt(d))/(2*a);
    double x2=(-b-Math.sqrt(d))/(2*a);
    System.out.print("x1="+x1+"\nx2="+x2);
    }else if(d==0){
    System.out.println("有两个相等的实根");
    double x1=(-b+Math.sqrt(d))/(2*a);
    System.out.print("x1=x2="+x1);
    }else{
    System.out.println("无实根");
    }
    }
    }
    }
      

  3.   

    这道题很基础,下面是我编的程序,刚学java,我已经学过C和C++,
    java和C、C++很相似,不是很难!import java.io.*;
    public class test {


    public static void main(String args[]) {
    int a,b,c;
    double root1,root2;


    try{

    BufferedReader stdin = new BufferedReader
    (new InputStreamReader(System.in));

    System.out.print("请输入a =\t" );
    a = Integer.parseInt(stdin.readLine());

    System.out.print("\n请输入b =\t" );
    b = Integer.parseInt(stdin.readLine());

    System.out.print("请输入c =\t" );
    c = Integer.parseInt(stdin.readLine());

    if(a == 0){
    System.out.println("方程ax2+bx+c=0不是二次方程式!");
    if(b == 0){
    if(c == 0){
    System.out.println("方程有无数解!");
    }
    else{
    System.out.println("方程无解!");

    }
    }


    else{
    System.out.println("The root is:" + ((-c)/b));
    }
    }

    else{ //a != 0

    System.out.println("方程ax2+bx+c=0是一元二次方程!");

    if(b*b - 4*a*c <0){
    System.out.println("一元二次方程ax2+bx+c=0无实根!");
    }
    else if(b*b - 4*a*c ==0){
    root1 = (-b)/(2*a);
    System.out.println("一元二次方程ax2+bx+c=0有两个相等的实根!The root is:" + root1);
    }
    else{
    root1 = ((-b)-Math.sqrt(b*b - 4*a*c))/(2*a);
    root2 = ((-b)+Math.sqrt(b*b - 4*a*c))/(2*a);
    System.out.println("一元二次方程ax2+bx+c=0有两个不等的实根!The one root is:" 
    + root1+"\tThe another root is:" + root2);
    }


    }



    }

    catch(Exception e){
    System.out.println(e);
    }


    }}
      

  4.   

    上面程序应该还可以简化一下,b*b - 4*a*c应该用一个变量存放起来,
    免得重复计算!