如何用java编写一元二次方程的求根问题

java的思想就是类,敬请编程高手在此指教。publicclassFc{inta,b,c;doublegen(){doublei;doublej=1.0;doublek=... java的思想就是类,敬请编程高手在此指教。
public class Fc{
int a,b,c;
double gen()
{double i;
double j=1.0;
double k=1.0;
i=b*b-4*a*c;
if(i>=0)
j=((-b)+Math.sqrt(i))/2*a;
k=((-b)-Math.sqrt(i))/2*a;
return(j);
}

public static void main(String[] args) {
Fc s=new Fc();
s.a=1;
s.b=5;
s.c=6;

System.out.println("j");
System.out.println("k");

}
}运行结果不是自己期望的。是字母j和k。前提是在一元二次方程a*x^2+b*x+c=0的b^2-4*a*c>=0时的俩根。可以把你的编程写上。谢谢!
展开
 我来答
兔丞飞
高粉答主

推荐于2019-09-09 · 专注娱乐 专注娱乐 专注娱乐
兔丞飞
采纳数:25 获赞数:19893

向TA提问 私信TA
展开全部

public class SquareEquation {

double a, b, c;

public void setA(double a) {

this.a = a;

}

public void setB(double b) {

this.b = b;

}

public void setC(double c) {

this.c = c;

}

public double getRootOne() {

double disk = calculateValidDisk();

return (-b + Math.sqrt(disk)) / (2 * a);

}

public double getRootTwo() {

double disk = calculateValidDisk();

return (-b - Math.sqrt(disk)) / (2 * a);

}

private double calculateValidDisk() {

if (a == 0) {

throw new EquationException("不是二次方程", EquationException.NONE_EQUATION);

}

double disk = b * b - 4 * a * c;

if (disk < 0) {

throw new EquationException("没有实根", EquationException.NO_REALROOT);

}

return disk;

}

}

扩展资料

比如 方程是 x平方+3x+2=0;

public class Test

{

public static void main(String []args)

{

double a=1;//二次项系数

double b=3;//一次项系数

double c=2;//常数项

double s=b*b-4*a*c;

if(s<0)

{

System.out.print("b*b-4ac<0,方程无解!");

return;

}

double ss=Math.sqrt(s);

double x1=(-1*b-ss)/(2*a);

double x2=(-1*b+ss)/(2*a);

System.out.println("x1="+x1);

System.out.println("x2="+x2);

}

}

参考资料:百度百科 Java

百度百科 一元二次方程

泷英韶pe
2019-04-21
知道答主
回答量:1
采纳率:0%
帮助的人:231
展开全部

import java.util.Scanner;

public class 一元二次方程 {

public static void main(String[] args) {

System.out.println("请输入你一元二次方程的a,b,c");

Scanner input=new Scanner(System.in);

int a=input.nextInt();

int b=input.nextInt();

int c=input.nextInt();

double d=b*b-4*a*c;

double e,f;

if (d==0){

System.out.println("这是个完全平方");

e=f=-b/2*a;

System.out.print(e);

}

else if(d<0) {

System.out.println("无效根");

}

else {

System.out.println("这是个不完全平方,需要用求根公式");

double g=Math.sqrt(Math.abs(b));

e=-(b+g)/2*a;

f=-(e);

System.out.println("第一根是"+e);

System.out.println("第二根是"+f);

}

}

}

这是我的运行结果

扩展资料:

利用java编程解决数学上的解方程题,我们需要把方程求解的思路写出来,然后对应到每一步具体的求解步骤上。就比如解一元二次方程,需要我们把解方程的求根公式,判断式写出,最后用代码表示出来就好了。

需要注意的是,java中有特定的包和数学函数去求解数学问题,比如求根号可以用Math.sqrt()函数,求绝对值用Math.abs()函数


本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2019-03-26 · TA获得超过280个赞
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

首先需要清除数学上的求根公式,再写成java代码。

先创建方程类Fc,属性a,b,c分别代表一元二次方程的系数,两个有参和无参的构造方法Fc,一个求方程实数根的方法getRoot。

最后写main方法,用于测试程序,以下是代码,图片为运行结果截图。

public class Fc {

int a;

int b;

int c;

public Fc() {

super();

}

public Fc(int a, int b, int c) {

super();

this.a = a;

this.b = b;

this.c = c;

}

public String getRoot(){

int m = b*b-4*a*c;

if(m>=0){

double x1 = (-b + Math.sqrt(m))/(2*a);

double x2 = (-b - Math.sqrt(m))/(2*a);

return "x1="+x1+",x2="+x2;

}else{

return "没有实根.";

}

}

public static void main(String[] args) {

Fc fc = new Fc(1,5,6);

System.out.println(fc.getRoot());

}

}

扩展资料:

java中变量的定义:数据类型 变量名,如:int x;就是定义了一个int类型的变量x。如果不定义变量就直接使用,会报“cannot be resolved to a variable”错误,意思是无法解析为变量。

java中的类是一个模板,它描述一类对象的行为和状态,而对象是类的一个实例,有状态和行为,例如定义了一个Cat类,它有属性name和age,有无参构造方法Cat,有方法speak,表示该类的一个行为说话,代码如下:

public class Cat {

String name;

int age;

public Cat() {

super();

}

public void speak(){

System.out.println("喵喵喵!!!");

}

}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泪reni
推荐于2019-08-01 · TA获得超过2485个赞
知道答主
回答量:15
采纳率:0%
帮助的人:1961
展开全部

错误解析

程序总体思想没有错,不过有一些小问题

1、输出语句中双引号包裹的代表原样输出:

这里需要去掉双引号

2、if语句,不写括号来注明代码块的情况下,只会把条件后一句当做代码块:

这里需要用大括号注明区域:

3、变量错误,输出的j和k为方法内定义,而不是在全局定义,而代码中却在另一个方法中调用:

这明显是调用不到的,不过可以把方法改成无返回值的void,然后在方法内输出值.

       

贴上修改后的代码:

#code:

#out:

拓展内容

java 函数的定义

习惯把函数也叫成方法,都是一个意思;函数是具备特定功能的一段代码块,解决了重复性代码的问题。

为什么要定函数呢?

目的是为了提高程序的复用性和可读性。

函数的格式

修饰符返回值类型函数名(形式参数类型1  参数名1,形式参数类型2  参数名2,形式参数类型3  参数名3......)

{

函数体语句;

return  返回值;

}

(1).修饰符:public 公共的static 静态的

(2).返回值类型:就是函数所实现的功能结果的数据类型。

(3).方法名:自己定义,符合标识符命名规则就行;驼峰命名规则 :单个单词首字母小写,多个单词后面的单词首字母大写。

(4).参数列表:即形式参数列表,用于接收实际参数。

(5).参数类型:参数的数据类型

(6).参数名:即变量名

(7).函数体语句:就是函数要完成的功能

(8).return:用来结束函数

(9).返回值:即这个函数的功能的结果 ,由return带回调用地方。

注意:void 表示不确定返回值类型,不能理解为没有返回值,只是返回值的类型不确定而已;

此外,返回值类型为void时,由于其返回值类型不能确定,故不能定义形式参数变量来接收;

当返回值类型为void时,return可以不写;但是当返回值类型为其他如int  String等时就必须写,否则编译会出错。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陪你丶看日落
推荐于2017-09-12 · TA获得超过668个赞
知道小有建树答主
回答量:436
采纳率:46%
帮助的人:91.6万
展开全部
public class Fc {
  int a, b, c;

  public void gen() {
    double i;
    double j = 1.0;
    double k = 1.0;
    i = b * b - 4 * a * c;
    if (i >= 0) {
      j = ((-b) + Math.sqrt(i)) / 2 * a;
      k = ((-b) - Math.sqrt(i)) / 2 * a;
    }
    System.out.println(j);
    System.out.println(k);
  }

  public static void main(String[] args) {
    Fc s = new Fc();
    s.a = 1;
    s.b = 5;
    s.c = 6;
    s.gen();
  }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式