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

java编写程序求一元二次方程的根~

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Equation {
JLabel l1 = new JLabel("请输入一元二次方程各项的系数:", JLabel.CENTER);
JTextField t1 = new JTextField(10);
JTextField t2 = new JTextField(10);
JTextField t3 = new JTextField(10);
JButton but1 = new JButton("求解");
JButton but2 = new JButton("重置");

public Equation() {
JFrame f = new JFrame();
l1.setFont(new Font("华文行楷", Font.PLAIN, 24));
l1.setForeground(Color.blue);
JLabel l2 = new JLabel("二次项系数:");
JLabel l3 = new JLabel("一次项系数:");
JLabel l4 = new JLabel("常数项 :");
Container c = f.getContentPane();
c.setLayout(new GridLayout(6, 1));
JPanel p2 = new JPanel(new FlowLayout());
JPanel p3 = new JPanel(new FlowLayout());
JPanel p4 = new JPanel(new FlowLayout());
JPanel p5 = new JPanel(new FlowLayout());
JPanel p6 = new JPanel(new FlowLayout());

p2.add(l1);
p3.add(l2);
p3.add(t1);
p4.add(l3);
p4.add(t2);
p5.add(l4);
p5.add(t3);
p6.add(but1);
p6.add(but2);
c.add(p2);
c.add(p3);
c.add(p4);
c.add(p5);
c.add(p6);
f.setTitle("求一元二次方程的解");
f.setBounds(200, 200, 400, 280);
f.setVisible(true);
f.setResizable(false);

// 设置按钮but1的按钮事件
but1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (t1.getText().equals("") | t2.getText().equals("")
| t3.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请输入方程各项的系数!", "警告",
JOptionPane.WARNING_MESSAGE);
}
double a = Double.parseDouble(t1.getText());
double b = Double.parseDouble(t2.getText());
double c = Double.parseDouble(t3.getText());
double m = Math.pow(b, 2) - 4 * a * c;
double n1 = (-b + Math.sqrt(m)) / 2 * a;
double n2 = (-b - Math.sqrt(m)) / 2 * a;
if (m < 0) {
JOptionPane.showMessageDialog(null, "该方程无实根", "提示信息",
JOptionPane.INFORMATION_MESSAGE);
} else if (m == 0) {
JOptionPane.showMessageDialog(null, "该方程有两个相等的实根" + '
'
+ "x1 = x2 = " + n1, "提示信息",
JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "该方程有两个不相等的实根" + '
'
+ "x1 = " + n1 + " " + "x2=" + n2, "提示信息",
JOptionPane.INFORMATION_MESSAGE);
}
}
});
// 设置按钮but2的按钮事件
but2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
t1.setText("");
t2.setText("");
t3.setText("");
}
});
}

public static void main(String args[]) {
Equation e = new Equation();
}
}

import java.util.Scanner;//这个是导入java包,因为你在这后面中用到Scanner类
double a, b, c; // 这里为什么要用double? 用int 可以么?
方程的解不见得全是int吧,用double更准确
Scanner scanner = new Scanner(System.in); //第一个Scanner是类名系统给定的是你要调用的一个类,第二个scanner是变量名,是自己定义的,也就是说你可以把他取成别的名字也行
a = scanner.nextDouble(); // 这三行就完全看不懂了。。
b = scanner.nextDouble();
c = scanner.nextDouble();
//获取用户输入的3个double型的数,前面的Scanner类就是用来获取用户输入的
double delta = b*b - 4*a*c; // delta是什么东西? 可以直接拿过来用的么?
delta同样是自己定义的变量,后面的b*b - 4*a*c是判断方程有几个跟的表达式,这句就是把b*b - 4*a*c的值赋给你自己定义的变量delta。

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();
  }
}


跪求计算机JAVA大神用eclipse解一元二次方程,求答案,谢谢
答:// 程序主入口函数,带命令行参数public static void main(String[] args){System.out.print("求ax^2+bx+c=0的根" + "\n");// 输出标题Scanner in = new Scanner(System.in);// 创建scanner,控制台会一直等待输入,直到敲回车结束System.out.print("请输入a的值:");// 输出“提示”...

JAVA 输入参数a,b,c,求一元二次方程a*x*x+b*x+c=0的根,结果保留2位小 ...
答:package first;import java.util.Scanner;// 输入abc 求出x a*x的2次方+b*x+c = 0 public class exercise161 { public static void main(String[] args){ Scanner scan = new Scanner(System.in);int a = scan.nextInt();int b = scan.nextInt();int c = scan.nextInt();int x =...

用Java求一元二次方程ax2+bx+c=0的根,要求a、b、c从控制台输入_百度知 ...
答:System.out.println("此方程解x=" + -b/(2*a));}else{ System.out.println("此方程解x1=" + ((-b+ "/"+ 2*a +"+√(" + (b*b - 4*a*c)) +")/" +(2*a)) + " , x2=" + ((-b+ "/"+ 2*a + "-√(" + (b*b - 4*a*c)) +")/" +(2*a)) );}...

java求一元二次方程的根
答:import java.util.Scanner;public class Test30009{ public static void main(String args[]){ int repeat, ri;int a,b,c,d;double x1 = 0,x2;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri = 1; ri <= repeat; ri++){ a=in.nextInt();b=in.nextInt();c=in...

java编写程序:输出1-10的平方、平方根和正弦。用调用Math类的方法!_百 ...
答:public class Main { / param args the command line arguments / public static void main(String[] args) { for (int i = 1; i <= 10; i++) { System.out.println(i+"的平方:"+(int)Math.pow(i, 2));System.out.println(i+"的平方根:"+Math.sqrt(i));System.out.println(...

java用方法 计算一元二次方程的实数根
答:0 原因:Java 中参数是按值传递。实参 x1、x2 传递给方法 root 后,root 的 x1、x2 是实参的复制品,和实参用的是不同的内存空间,root 方法中修改 x1、x2 只是修改了形参,并不能修改 main 方法中的实参 x1、x2。所以正确的方法是在 root 方法中求出根后用数组存放根作为返回值返回。

java 求一元二次方程的根
答: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 ...

java的平方表达式怎么写
答:“java”的平方表达式是pow (double x,double y)。函数原型:double pow (double x,double y)。功能:返回x的y次方。如要在java中求9的平方,可写作double pow(double 9,double 9)。平方是一种运算,比如,a的平方表示a×a,简写成a²,也可写成a×a(a的一次方乘a的一次方等于a的2...

怎样用JAVASCRIPT解一元二次方程
答:B: C: R1 R2 function showResult(){ var pattern=/[0-9]+/;var a=document.getElementById("texta").value;var b=document.getElementById("textb").value;var c=document.getElementById("textc").value;var r1,r2;if(a==""||b==""||c=="") ...

一,用JAVA语言编程求一元函数的定积分∫1→5x^2dx
答:double deltaX = 0.0000001; double sum = 0.0; for(double i=start; i<=end-deltaX; i+=deltaX){ sum += (i*i+(i+deltaX)*(i+deltaX))*deltaX/2.0 ; //划分成若干个梯形 求面积总和 } return sum; } ...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网