import java.math.*;
import javax.swing.*;
public class math
{
public static void main(String []args)
{
double f1,f2,x;
do{
System.out.print("input a,b,c,d,x1,x2");
String a0=JOptionPane.showInputDialog("请输入a");
            double a=Double.parseDouble(a0);
            String b0=JOptionPane.showInputDialog("请输入b");
            double b=Double.parseDouble(b0);
            String c0=JOptionPane.showInputDialog("请输入c");
            double c=Double.parseDouble(c0);
            String d0=JOptionPane.showInputDialog("请输入d");
            double d=Double.parseDouble(d0);
            String x0=JOptionPane.showInputDialog("请输入x1");
            double x1=Double.parseDouble(x0);
            String x00=JOptionPane.showInputDialog("请输入x2");
            double x2=Double.parseDouble(x00);
f1=f(x1,a,b,c,d);f2=f(x2,a,b,c,d);
}while(f1*f2>=0);

x=root(x1,x2,a,b,c,d);
System.out.print("a root of equation is "+x);
}

public double root(double x1,double x2,double a1,double b1,double c1,double d1)    //求(x1,x2)区间内方程的根
{
double x,y,y1;
y1=f(x1,a1,b1,c1,d1);
do{
x=xpoint(x1,x2,a1,b1,c1,d1);
y=f(x,a1,b1,c1,d1);
if(y1*y>0)
{
y1=y;
x1=x;
}else
x2=x;
}while(fab(y)>=0.0001);

return(x);
}

public double f(double x3,double a2,double b2,double c2,double d2)     //求f(x)的函数值
{
double y;
y=a2*x*x*x+b2*x*x+c2*x+d2;
return y;
}

public double xpoint(double x1,double x2,double a3,double b3,double c3,double d3)   /*求(x1,f(x1))和(x2,f(x2))的连线与x轴的交点横坐标:x=[x1×f(x2)-x2×f(x1)] / [f(x2)-f(x1)]*/  {
double x;
x=x=(x1*f(x2,a3,b3,c3,d3)-x2*f(x1,a3,b3,c3,d3))/(f(x2,a3,b3,c3,d3)-f(x1,a3,b3,c3,d3));
return x;
}


}