如何用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时的俩根。可以把你的编程写上。谢谢! 展开
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
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()函数
首先需要清除数学上的求根公式,再写成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("喵喵喵!!!");
}
}
错误解析
程序总体思想没有错,不过有一些小问题
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等时就必须写,否则编译会出错。
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();
}
}