Posted on 2006-07-19 14:48
firslien 阅读(337)
评论(0) 编辑 收藏
从这个程序中学到的:
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();
}
}