java 求一元二次方程的根
代码如下,运行时无法计算出结果,显示infinity请教哪里出错importjava.math.*;publicclassfunction{publicstaticboo...
代码如下,运行时无法计算出结果,显示infinity 请教哪里出错
import java.math.*;
public class function
{
public static boolean boo;//------------------------------声明全局变量,再在函数内运算
double a,b,c,x;
public static double p;
public function(double a,double b,double c)
{
p=b*b-4*a*c;
if(p>=0)
{
// c=a*x*x+b*x;
boo=true;
}
else
{
// System.out.println("方程无实根");
boo=false;
}
}
double calculator1()
{
double s1;
s1=((-b)-Math.sqrt(p))/(2*a);
return s1;
}
double calculator2()
{
double s2;
s2=((-b)+Math.sqrt(p))/(2*a);
return s2;
}
public static void main(String args[])
{
function aa=new function(2.0,6.0,3.0);
//double s=aa.calculator2();
//gdouble ss=aa.calculator1();
if(boo)
{
System.out.println("方程的1根是"+aa.calculator1());
System.out.println("方程的2根是"+aa.calculator2());
}
else
{
System.out.println("方程无实根");
}
}
} 展开
import java.math.*;
public class function
{
public static boolean boo;//------------------------------声明全局变量,再在函数内运算
double a,b,c,x;
public static double p;
public function(double a,double b,double c)
{
p=b*b-4*a*c;
if(p>=0)
{
// c=a*x*x+b*x;
boo=true;
}
else
{
// System.out.println("方程无实根");
boo=false;
}
}
double calculator1()
{
double s1;
s1=((-b)-Math.sqrt(p))/(2*a);
return s1;
}
double calculator2()
{
double s2;
s2=((-b)+Math.sqrt(p))/(2*a);
return s2;
}
public static void main(String args[])
{
function aa=new function(2.0,6.0,3.0);
//double s=aa.calculator2();
//gdouble ss=aa.calculator1();
if(boo)
{
System.out.println("方程的1根是"+aa.calculator1());
System.out.println("方程的2根是"+aa.calculator2());
}
else
{
System.out.println("方程无实根");
}
}
} 展开
2个回答
展开全部
准确的说:是错在了
System.out.println("方程的1根是"+aa.calculator1());
System.out.println("方程的2根是"+aa.calculator2());
这两句上,因为无法从静态上下文中引用非静态 变量a,b,c,因为你没在double 前声明static ,所以无法引用到a,b,c,的值.即使你在前加了static (static double a,b,c)下面main函数里引用的都为0.0
现修改如下:
import java.math.*;
public class Function
{
public static boolean boo;//------------------------------声明全局变量,再在函数内运算
static double a,b,c,x;
public static double p;
public Function(double a,double b,double c)
{
this.a=a;
this.b=b;
this.c=c;
p=b*b-4*a*c;
if(p>=0)
{
// c=a*x*x+b*x;
boo=true;
}
else
{
// System.out.println("方程无实根");
boo=false;
}
}
double calculator1()
{
double s1;
s1=((-b)-Math.sqrt(p))/(2*a);
return s1;
}
double calculator2()
{
double s2;
s2=((-b)+Math.sqrt(p))/(2*a);
return s2;
}
public static void main(String args[])
{
Function aa=new Function(2.0,6.0,3.0);
//System.out.println(boo);
System.out.println(b);//你可以多写这样的语句进行测试
if(boo)
{
System.out.println("方程的1根是"+aa.calculator1());
System.out.println("方程的2根是"+aa.calculator2());
}
else
{
System.out.println("方程无实根");
}
}
}
运行结果://true
//6.0
方程的1根是-2.3660254037844384
方程的2根是-0.6339745962155614
哈哈,总之是static没用好,给分吧快。
System.out.println("方程的1根是"+aa.calculator1());
System.out.println("方程的2根是"+aa.calculator2());
这两句上,因为无法从静态上下文中引用非静态 变量a,b,c,因为你没在double 前声明static ,所以无法引用到a,b,c,的值.即使你在前加了static (static double a,b,c)下面main函数里引用的都为0.0
现修改如下:
import java.math.*;
public class Function
{
public static boolean boo;//------------------------------声明全局变量,再在函数内运算
static double a,b,c,x;
public static double p;
public Function(double a,double b,double c)
{
this.a=a;
this.b=b;
this.c=c;
p=b*b-4*a*c;
if(p>=0)
{
// c=a*x*x+b*x;
boo=true;
}
else
{
// System.out.println("方程无实根");
boo=false;
}
}
double calculator1()
{
double s1;
s1=((-b)-Math.sqrt(p))/(2*a);
return s1;
}
double calculator2()
{
double s2;
s2=((-b)+Math.sqrt(p))/(2*a);
return s2;
}
public static void main(String args[])
{
Function aa=new Function(2.0,6.0,3.0);
//System.out.println(boo);
System.out.println(b);//你可以多写这样的语句进行测试
if(boo)
{
System.out.println("方程的1根是"+aa.calculator1());
System.out.println("方程的2根是"+aa.calculator2());
}
else
{
System.out.println("方程无实根");
}
}
}
运行结果://true
//6.0
方程的1根是-2.3660254037844384
方程的2根是-0.6339745962155614
哈哈,总之是static没用好,给分吧快。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询