JAVA求一元二次方程的根,简单问题

importjava.lang.Math.*;classwp{privatefloata,b,c,realpart,imagpart,disc;wp(){a=Input.... import java.lang.Math.*;
class wp{
private float a,b,c,realpart,imagpart,disc;
wp(){
a=Input.readFloat();
b=Input.readFloat();
c=Input.readFloat();
}
void solve(){
realpart=-(b/(2*a));
imagpart=(sqrt(-(b*b-4*a*c))/(2*a));
if(abs(a)<=0.000001){
System.out.println("Is not a quadratic!");
}
else{
System.out.println("It is a quadratic");
disc=b*b-4*a*c;

if(abs(disc)<=0.0000001){
System.out.println("has two equal roots="+(realpart+imagpart));
}
else if(disc>0.0000001)
System.out.println("has distinct real roots="+(realpart+imagpart)+"+"+(realpart-imagpart));
else
System.out.println("has complex roots="+(realpart+imagpart)+"+"+(realpart-imagpart));
}
}
public static void main(String[] args){
wp w=new wp();
w.solve();
}
}

其中总说sqrt, abs找不到符号。是导入错误的类了吗 ???

还有一个问题就是当判别式〈0时,一元二次方程的根该怎么求呢?
我怎么在计算的过程中会得出“NaN”??
这是什么东西呢?
顺便请大家帮我把我的代码中求虚根的方法改一下。不胜感激!
展开
 我来答
snare1106
推荐于2016-12-01 · TA获得超过211个赞
知道答主
回答量:100
采纳率:0%
帮助的人:91.3万
展开全部
1、首先你的包确实导入错误,应该是import java.lang.Math;没有后面的*,因为你导入的已经是一个具体的类,所以就不要写后面的*.当你导入的是一个包中所有的类的时候,例如导入lang包下所有的类,就要写成import java.lang.*;
其次,java.lang这个包是java编译是自动导入的,你可以不写这条导入语句,就能正常执行程序
还有,你想调用abs,sqrt这样的方法,这些都是静态方法,虽然不用生成对象,进行调用,但是它们是要用类名进行调用的,你应该写成Math.abs() ;
和Math.sqrt() ;就可以执行了

2、当判别式<0,这个时候就产生虚根了,写起来比较麻烦,算法是这样的
举个简单例子说明吧:
求一元二次方程:x^2+x+1=0的虚根
解:△=1^2-4×1×1=-3
由求根公式x=[-b±√(-△)i]/2a =[-1±√(-△)i]/2=[-1±√3i]/2

3、NAN这个我写一下它的全称你就知道了no a number就是运算结果不是数字,如果你将0作为除数,就能得到这个结果

你的程序我修改了一下

import java.io.*;
class wp{
private double a,b,c,realpart,imagpart,disc;
BufferedReader s1 = new BufferedReader(new InputStreamReader(System.in));
BufferedReader s2 = new BufferedReader(new InputStreamReader(System.in));
BufferedReader s3 = new BufferedReader(new InputStreamReader(System.in));

wp(){
try{
a=Double.valueOf(s1.readLine()) ;
b=Double.valueOf(s2.readLine()) ;
c=Double.valueOf(s3.readLine()) ;
}
catch(Exception e)
{
System.out.println("输入错误!!!") ;
}
}
void solve(){
realpart=-(b/(2*a));
System.out.println(realpart) ;
imagpart=(Math.sqrt(b*b-4*a*c)/(2*a));
System.out.println(imagpart) ;

if(Math.abs(a)<=0.000001){
System.out.println("Is not a quadratic!");
}
else{
System.out.println("It is a quadratic");
disc=b*b-4*a*c;

if(Math.abs(disc)<=0.0000001){
System.out.println("has two equal roots="+(realpart+imagpart));
}
else if(disc>0.0000001)
System.out.println("has distinct real roots="+(realpart+imagpart)+"+"+(realpart-imagpart));
else
System.out.println("has complex roots=");
System.out.print("x1 = "+realpart+"+"+(Math.sqrt(-(b*b-4*a*c))/(2*a)+"i")) ;
System.out.print(" x2="+realpart+"-"+(Math.sqrt(-(b*b-4*a*c))/(2*a)+"i")) ;
}
}
public static void main(String[] args){
wp w=new wp();
w.solve();
}
}
百度网友97a4072c2
2006-12-26 · TA获得超过162个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:0
展开全部
判别式〈0时,一元二次方程无根啊!你要求虚根吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式