从这个程序中学到的:
1 throws IOExceptiom 在这里不如用try catch方便
2 已经创建类的方法的调用



//计算一个一元二次方程
import java.io.*;


class InputData //建造一个从键盘获取数据的累
{
 private static String s="";
 public static void input()
 {
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  try
  {
   s=in.readLine();
  }catch (IOException e){}
  
 }
 static public float getFloat()
 {
  
  input();//调用input方法
  return Float.parseFloat(s);
  }
}


class Equation  //建造一个表示方程式的类
{
 float a,b,c,disc=0;
 void input()  //三个参数输入的方法
 {
  System.out.println("请输入3个参数 a,b,c:");
  System.out.println("a=");
  a=InputData.getFloat();//调用自定义的InputData类中的input方法
  System.out.println("b=");
  b=InputData.getFloat();
  System.out.println("c=");
  c=InputData.getFloat();
 }
 void getRoots() //获得根的方法
 {   double x1, x2;
     double realpart,imagpart;
  if (Math.abs(a)<1e-5)//判断是否为一元二次方程
  {
   System.out.println("这不是一个一元二次方程");
      System.exit(0);//退出程序
  }
  else
  {
   System.out.println("这是一个一元二次方程");
   disc=b*b-4*a*c;
     
   if(disc<=1e-5)
   {
    x1=(-b)/(2*a);
    x2=(-b)/(2*a);
    System.out.println("此一元二次方程有两个相等的根:x1=x2="+x1);
   }
   else if(disc>1e-5)
   {
    x1=(-b+Math.sqrt(disc))/(2*a);
    x2=(-b-Math.sqrt(disc))/(2*a);
    System.out.println("这个一元二次方程有两个实根:"+"\nx1="+x1+"\nx2"+x2);
   }
   else
   {
    realpart=(-b)/2*a;
    imagpart=Math.sqrt(-disc);
    System.out.println("这个一元二次方程有两个复数根:");
    System.out.println("x1="+realpart+"+"+imagpart+"i");
    System.out.println("x2="+realpart+"-"+imagpart+"i");
   }
  }
  
  } 
}
 

/**
 * @author Administrator
 *
 */
public class roots //主类
{
 public static void main (String[] args)
 {
  Equation e=new Equation();
  e.input();
  e.getRoots();
  
 }
}

 

 

 

 

 

 

 

 

 


 


只有注册用户登录后才能发表评论。


网站导航: