import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class QuadraticEquationSolverGUI extends JFrame implements ActionListener {
private JLabel labelTitle, labelA, labelB, labelC, labelResult;
private JTextField fieldA, fieldB, fieldC, fieldResult;
private JButton buttonSolve;
public QuadraticEquationSolverGUI() {
// 设置程序窗口基本属性
setTitle("Quadratic Equation Solver");
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建程序主窗口中的各个组件
labelTitle = new JLabel("Quadratic Equation Solver");
labelTitle.setFont(new Font("Arial", Font.BOLD, 16));
labelTitle.setHorizontalAlignment(JLabel.CENTER);
labelA = new JLabel("a:");
labelB = new JLabel("b:");
labelC = new JLabel("c:");
fieldA = new JTextField();
fieldB = new JTextField();
fieldC = new JTextField();
fieldResult = new JTextField();
fieldResult.setEditable(false);
labelResult = new JLabel("Result:");
buttonSolve = new JButton("Solve");
buttonSolve.addActionListener(this);
// 将各个组件添加到程序窗口中
JPanel panel = new JPanel(new GridLayout(5, 2));
panel.add(labelA);
panel.add(fieldA);
panel.add(labelB);
panel.add(fieldB);
panel.add(labelC);
panel.add(fieldC);
panel.add(labelResult);
panel.add(fieldResult);
panel.add(buttonSolve);
Container container = getContentPane();
container.setLayout(new BorderLayout());
container.add(labelTitle, BorderLayout.NORTH);
container.add(panel, BorderLayout.CENTER);
// 在程序主窗口中显示考生基本信息
JLabel labelInfo = new JLabel("学号:xxx,姓名:xxx");
labelInfo.setFont(new Font("Arial", Font.PLAIN, 12));
container.add(labelInfo, BorderLayout.SOUTH);
}
// 实现按钮事件处理方法
public void actionPerformed(ActionEvent e) {
if (e.getSource() == buttonSolve) {
try {
// 从输入框中获取方程系数并转换为double类型
double a = Double.parseDouble(fieldA.getText());
double b = Double.parseDouble(fieldB.getText());
double c = Double.parseDouble(fieldC.getText());
// 调用QuadraticEquationSolver类中的solve方法求解方程,并将结果显示在输出框中
double[] roots = QuadraticEquationSolver.solve(a, b, c);
fieldResult.setText(roots[0] + ", " + roots[1]);
} catch (NumberFormatException ex) {
// 当输入的系数不合法时,显示错误信息
JOptionPane.showMessageDialog(this, "Invalid input: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
// 主程序入口
public static void main(String[] args) {
QuadraticEquationSolverGUI gui = new QuadraticEquationSolverGUI();
gui.setVisible(true);
}
}
class QuadraticEquationSolver {
// 定义静态方法solve,用于求解一元二次方程的根
public static double[] solve(double a, double b, double c) {
double delta = b * b - 4 * a * c;
// 判断方程是否有解
if (delta < 0) {
throw new IllegalArgumentException("Equation has no real roots");
}
// 计算方程的根
double x1 = (-b + Math.sqrt(delta)) / (2 * a);
double x2 = (-b - Math.sqrt(delta)) / (2 * a);
return new double[] {x1, x2};
}
}
孤儿屯救助站
最新推荐文章于 2024-07-15 22:27:18 发布