Java用Mvc写一个一元二次方程

时间: 2024-01-02 18:03:05 浏览: 27
好的,以下是使用Java MVC模式设计的一元二次方程计算器: Model(模型):Equation.java ```java public class Equation { private double a, b, c; private double discriminant; private double root1, root2; public Equation(double a, double b, double c) { this.a = a; this.b = b; this.c = c; } public void solve() { discriminant = b * b - 4 * a * c; if (discriminant < 0) { root1 = Double.NaN; root2 = Double.NaN; } else if (discriminant == 0) { root1 = -b / (2 * a); root2 = root1; } else { root1 = (-b + Math.sqrt(discriminant)) / (2 * a); root2 = (-b - Math.sqrt(discriminant)) / (2 * a); } } public double getRoot1() { return root1; } public double getRoot2() { return root2; } } ``` View(视图):EquationView.java ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; public class EquationView extends JFrame { private JTextField aField = new JTextField(5); private JTextField bField = new JTextField(5); private JTextField cField = new JTextField(5); private JTextField root1Field = new JTextField(10); private JTextField root2Field = new JTextField(10); private JButton solveButton = new JButton("Solve"); public EquationView() { JPanel equationPanel = new JPanel(new GridLayout(2, 3)); equationPanel.add(new JLabel("a:")); equationPanel.add(aField); equationPanel.add(new JLabel("x^2 +")); equationPanel.add(new JLabel("b:")); equationPanel.add(bField); equationPanel.add(new JLabel("x +")); equationPanel.add(new JLabel("c:")); equationPanel.add(cField); equationPanel.add(new JLabel("=")); JPanel rootPanel = new JPanel(new GridLayout(2, 2)); rootPanel.add(new JLabel("Root 1:")); rootPanel.add(root1Field); rootPanel.add(new JLabel("Root 2:")); rootPanel.add(root2Field); JPanel buttonPanel = new JPanel(new FlowLayout()); buttonPanel.add(solveButton); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(equationPanel, BorderLayout.CENTER); mainPanel.add(rootPanel, BorderLayout.SOUTH); mainPanel.add(buttonPanel, BorderLayout.EAST); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("Quadratic Equation Solver"); this.setSize(400, 150); this.setLocationRelativeTo(null); this.setResizable(false); this.add(mainPanel); } public double getA() { return Double.parseDouble(aField.getText()); } public double getB() { return Double.parseDouble(bField.getText()); } public double getC() { return Double.parseDouble(cField.getText()); } public void setRoot1(double root1) { root1Field.setText(Double.toString(root1)); } public void setRoot2(double root2) { root2Field.setText(Double.toString(root2)); } public void addSolveListener(ActionListener listener) { solveButton.addActionListener(listener); } } ``` Controller(控制器):EquationController.java ```java import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class EquationController { private EquationView view; private Equation model; public EquationController(EquationView view, Equation model) { this.view = view; this.model = model; view.addSolveListener(new SolveListener()); } class SolveListener implements ActionListener { public void actionPerformed(ActionEvent e) { double a = view.getA(); double b = view.getB(); double c = view.getC(); model = new Equation(a, b, c); model.solve(); view.setRoot1(model.getRoot1()); view.setRoot2(model.getRoot2()); } } } ``` Main(主函数):Main.java ```java public class Main { public static void main(String[] args) { Equation model = new Equation(1, 1, -6); EquationView view = new EquationView(); EquationController controller = new EquationController(view, model); view.setVisible(true); } } ``` 在运行程序时,将显示一个窗口,用户可以输入一元二次方程的系数,并点击“Solve”按钮计算方程的根。计算结果将显示在窗口下方的文本框中。 注意:为了使代码更简洁,此处省略了一些异常处理和输入验证等细节。在实际开发中,应该对用户输入进行验证,以确保程序的正确性和健壮性。

相关推荐

最新推荐

recommend-type

Spring MVC配置双数据源实现一个java项目同时连接两个数据库的方法

主要给大家介绍了关于Spring MVC如何配置双数据源实现一个java项目同时连接两个数据库的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
recommend-type

使用idea搭建一个spring mvc项目的图文教程

主要介绍了使用idea直接创建一个spring mvc项目的图文教程,本文通过图文并茂的方式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

有关jsp+mvc+tomcat的一个注册登录程序代码

基于eclipse一个用户注册登录模块代码,有功能要求和开发工具要求。程序有关一个简单的jsp程序的注册登录代码
recommend-type

一个简单的spring mvc实例.docx

在 Spring MVC 中, jsp 文件中尽量不要有 Java 代码, 只有 HTML 代码和"迭代(forEach)"与"判断(if)"两个jstl标签. jsp 文件只作为渲染(或称为视图 View)模板使用. 好了, 我们开始吧. 首先我们需要一个放在 WEB-INF ...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性

![MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性](https://picx.zhimg.com/80/v2-8132d9acfebe1c248865e24dc5445720_1440w.webp?source=1def8aca) # 1. MATLAB结构体基础** MATLAB结构体是一种数据结构,用于存储和组织相关数据。它由一系列域组成,每个域都有一个名称和一个值。结构体提供了对数据的灵活访问和管理,使其成为组织和处理复杂数据集的理想选择。 MATLAB中创建结构体非常简单,使用struct函数即可。例如: ```matlab myStruct
recommend-type

详细描述一下STM32F103C8T6怎么与DHT11连接

STM32F103C8T6可以通过单总线协议与DHT11连接。连接步骤如下: 1. 将DHT11的VCC引脚连接到STM32F103C8T6的5V电源引脚; 2. 将DHT11的GND引脚连接到STM32F103C8T6的GND引脚; 3. 将DHT11的DATA引脚连接到STM32F103C8T6的GPIO引脚,可以选择任一GPIO引脚,需要在程序中配置; 4. 在程序中初始化GPIO引脚,将其设为输出模式,并输出高电平,持续至少18ms,以激活DHT11; 5. 将GPIO引脚设为输入模式,等待DHT11响应,DHT11会先输出一个80us的低电平,然后输出一个80us的高电平,
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依