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, "该方程有两个相等的实根" + '\n'
+ "x1 = x2 = " + n1, "提示信息",
JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "该方程有两个不相等的实根" + '\n'
+ "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();
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-06-11
import java.math.*;
public class demo{
/*
* 定义构造函数,写入A,B,C的值.
*/
private int a,b,c;
private Vector vector;

public demo(int a,int b,int c){
this.a = a;
this.b = b;
this.c = c;
}
public Vector test(){

if(b*b<4*a*c){
System.out.println("无跟");
vector.add("空");
}
else if(b*b=4*a*c){
int i = (-b-cbrt(b^2-4*a*c))/2/a
System.out.println("只有一个根"+i);
vector.add(i);
}
else if(b*b>4*a*c){
double x1=(-b-cbrt(b^2-4*a*c))/2/a
double x2=(-b+cbrt(b^2-4*a*c))/2/a
vector.add(x1);
vector.add(x2);
}
}

}

应该就是这个样子,我印象中写的,没有调试,你按照这个思路去改改本回答被提问者采纳
第2个回答  2008-06-11
比如 方程是 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);
}
}
第3个回答  2019-03-03
import
java.math.*;
public
class
demo{
/*
*
定义构造函数,写入A,B,C的值.
*/
private
int
a,b,c;
private
Vector
vector;
public
demo(int
a,int
b,int
c){
this.a
=
a;
this.b
=
b;
this.c
=
c;
}
public
Vector
test(){
if(b*b<4*a*c){
System.out.println("无跟");
vector.add("空");
}
else
if(b*b=4*a*c){
int
i
=
(-b-cbrt(b^2-4*a*c))/2/a
System.out.println("只有一个根"+i);
vector.add(i);
}
else
if(b*b>4*a*c){
double
x1=(-b-cbrt(b^2-4*a*c))/2/a
double
x2=(-b+cbrt(b^2-4*a*c))/2/a
vector.add(x1);
vector.add(x2);
}
}
}
应该就是这个样子,我印象中写的,没有调试,你按照这个思路去改改
相似回答