用java求解一元四次方程_Java程序设计(十四)----一个求一元二次方程根

* 程序的版权和版本声明部分

* Copyright (c) 2012, 烟台大学计算机学院学生

* All rights reserved.

* 作 者: 刘镇

* 完成日期: 2012 年 11 月 23 日

* 版 本 号: 2.014

* 对任务及求解方法的描述部分

* 问题描述:编写一个FontFamily类,该类对象获取当前机器可用的全部字体名称。编写一个对话框FontDialog,该对话框是模式对话框,采用BorderLayout布局,包含一个JComboBox放在北面显示全部字体的名称,包含一个JLabel放在中间,显示字体的效果,包含两个按钮放在南面,点击YES,在对话框所依赖的窗口中设置字体的效果,点击Cancle取消。编写一个窗口FrameHaveDialog,该窗口有一个按钮和一个文本区,当单击该按钮时,弹出对话框FontDialog,然后根据用户在对话框下拉列表中选择的为显示文本区中的文本。最后编写一个程序执行入口进行测试。

*代码部分:

MyPanel:

package lz_13w;

import java.awt.FlowLayout;

import java.awt.Panel;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.nio.DoubleBuffer;

import javax.swing.*;

/*

* 定义Panel实现系数的输人和button按钮:

* 值得一提的是:通过初始化SetLayout()指定布局;通过SetSize()和 SetPreferredSize()改变指定了布局后组件大小如何改变;

*/

public class MyPanel extends Panel{

JLabel label1, label2, label3;

JTextField text1, text2, text3;

JButton button;

MyPanel()

{

this.setLayout(new FlowLayout(FlowLayout.CENTER));

text1 = new JTextField();

text1.setSize(65, 20);

text1.setPreferredSize(text1.getSize());

text2 = new JTextField();

text2.setSize(65, 20);

text2.setPreferredSize(text1.getSize());

text3 = new JTextField();

text3.setSize(65, 20);

text3.setPreferredSize(text1.getSize());

label1 = new JLabel("二次项系数");

label2 = new JLabel("一次项系数");

label3 = new JLabel("常数项");

button = new JButton("确定");

add(label1);

add(text1);

add(label2);

add(text2);

add(label3);

add(text3);

add(button);

}

}

SquareEquation:

package lz_13w;

/*

* 自定义异常:用于无实根情况;

*/

class NoSolveException extends Exception

{

public String message;

public NoSolveException() {

message = "输入结果无实根!";

}

public String toString()

{

return message;

}

}

/*

* A是二次方系数;B是一次放系数;C是常数项系数;x1,x2用于存储两个根;m返回信息;

*/

public class SquareEquation {

private double A;

private double B;

private double C;

private double x1;

private double x2;

public static String m;

public SquareEquation() {

A = 0;

B = 0;

C = 0;

}

public SquareEquation(double A, double B, double C){

this.A = A;

this.B = B;

this.C = C;

}

public double getA() {

return A;

}

public void setA(double A) {

A = A;

}

public double getB() {

return B;

}

public void setB(double B) {

B = B;

}

public double getC() {

return C;

}

public void setC(double c) {

C = c;

}

/*

* Solve用于用数学公式呢求解两根:flag是(b^2 - 4 * a * c);

* if语句是用于抛出无实根异常;而如果有实根则执行相关求解;用m返回求解信息。

*/

public void Solve() throws NoSolveException

{

double flag = this.B * this.B - 4 * this.A * this.C;

if(flag < 0)

{

NoSolveException exception = new NoSolveException();

throw exception;

}

else

{

this.x1 = ((- this.B) + Math.sqrt(flag)) / 2 * this.A;

if(flag == 0)

{

this.x2 = this.x1;

}

this.x2 = ((- this.B) - Math.sqrt(flag)) / 2 * this.A;

m = "根: " + this.x1 + "根: " + this.x2;

}

}

}

EquationFrame:

package lz_13w;

import java.awt.BorderLayout;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFrame;

import javax.swing.JTextArea;

/*

* 对窗体的编写:用MyPanel、JTestArea和求解类SquarEquation将窗口实现。

*

*/

public class EquationFrame extends JFrame implements ActionListener{

MyPanel panel;

JTextArea textArea;

SquareEquation s1;

public EquationFrame() {

this.setLayout(new BorderLayout());

panel = new MyPanel();

panel.button.addActionListener(this);

textArea = new JTextArea();

textArea.setBounds(getX(), getY(), 100, 100);

add(panel, BorderLayout.NORTH);

add(textArea, BorderLayout.CENTER);

setBounds(450, 300, 600, 125);

setVisible(true);

validate();

}

/*

*

* (non-Javadoc)

* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)

* 下面定义了事件actionPerformed,实现的思想是:初始化EquationFrame,初始参数通过三个TextArea组件获得,并将有可能的两种异常捕获,一个是数据输入错误异常;一个是无实根异常;

* 通过一个自定义异常和默认的NumberFormatException打印到TextArea中显示;否则无异常直接显示结果。

*/

public void actionPerformed(ActionEvent e) {

try {

s1 = new SquareEquation(Double.valueOf(panel.text1.getText()), Double.valueOf(panel.text2.getText()), Double.valueOf(panel.text3.getText()));

s1.Solve();

}catch(NumberFormatException e1){

s1.m = "输入有误,发生异常:" + e1.getMessage();

this.textArea.setText(s1.m);

}catch (NoSolveException e2) {

s1.m = e2.toString();

this.textArea.setText(s1.m);

}

this.textArea.setText(s1.m);

}

}

TestEquation:

package lz_13w;

public class TestEquation {

/**

* @param args

*/

public static void main(String[] args) {

new EquationFrame();

}

}

测试结果:

心得经验:

一、以前没写过注释,最近接触了几个同学,他们参赛的体会是注释虽然不是对程序本身有什么改进,但对于后面维护,或是说善后工作有帮助,尽管现在由于代码量不大体现不明显;但好习惯还是早养成的好;

二、在MyPanel中:以前总是觉得为什么SetSize()不能改变组建的大小啊,郁闷之后,发现:每当我设置画布或是窗口的布局,就将setSize()屏蔽了(也许不太贴切),但确实setLayout()优先级高于SetSize(),从网上查找了俩解决办法,从而使组建能按自己意愿调整大小:1、通过setLayout(null);总觉得这样是不太好的方法;到哪也能解决。2、通过加:SetSize(12,

33);和SetPreferredSize(getSize());设置指定大小的组建;

三、在解决布局时以前总是用:“SetLayout(new FlowLayout());”,总是觉得组建不能固定大小位置,按照输入自己在调整大小位置;现在:SetLayout(new FlowLayout(FlowLayout.Center));将组建固定在布局中,居中显示;

四、一个半解决的问题:在自定义异常中:SquationFrame中捕获的异常不能通过:e1.getMessage()或是 e1.toString()直接通过JTextArea中的SetText()显示,必须通过先赋值给一个String变量,再显示;不知问题出在哪,有待解决。具体代码:

catch(NumberFormatException e1){

s1.m = "输入有误,发生异常:" + e1.getMessage();

this.textArea.setText(s1.m);}

catch (NoSolveException e2) {

s1.m = e2.toString();

this.textArea.setText(s1.m);}

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
<p> <strong><span style="font-size:20px;color:#FF0000;">本课程主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者</span></strong> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">1. 包含:<span style="color:#FFFF00;background-color:#FF0000;">项目源码、</span><span style="color:#FFFF00;background-color:#FF0000;">项目文档、数据库脚本、软件工具</span>等所有资料</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">2. 手把手的带你从零开始部署运行本套系统</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">3. 该项目附带的源码资料可作为毕设使</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">4. 提供技术答疑和远程协助指导</span></strong></span><strong><span style="font-size:18px;"></span></strong> </p> <p> <br /> </p> <p> <span style="font-size:18px;"><strong>项目运行截图:</strong></span> </p> <p> <strong><span style="font-size:18px;">1)系统登陆界面</span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015433522.png" alt="" /><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">2)学生模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015575966.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">3)教师模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016127898.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">4)系统管理员</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016281177.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016369884.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">更多Java毕设项目请关注我的毕设系列课程 <a href="https://edu.csdn.net/lecturer/2104">https://edu.csdn.net/lecturer/2104</a></span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p>
<p> 课程演示环境:Windows10  </p> <p> 需要学习<span>Ubuntus</span>系统<span>YOLOv4-tiny</span>的同学请前往《<span>YOLOv4-tiny</span>目标检测实战:训练自己的数据集》 <span></span> </p> <p> <span> </span> </p> <p> <span style="color:#E53333;">YOLOv4-tiny</span><span style="color:#E53333;">来了!速度大幅提升!</span><span></span> </p> <p> <span> </span> </p> <p> <span>YOLOv4-tiny</span>在<span>COCO</span>上的性能可达到:<span>40.2% AP50, 371 FPS (GTX 1080 Ti)</span>。相较于<span>YOLOv3-tiny</span>,<span>AP</span>和<span>FPS</span>的性能有巨大提升。并且,<span>YOLOv4-tiny</span>的权重文件只有<span>23MB</span>,适合在移动端、嵌入式设备、边缘计算设备上部署。<span></span> </p> <p> <span> </span> </p> <p> 本课程将手把手地教大家使<span>labelImg</span>标注和使<span>YOLOv4-tiny</span>训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。<span></span> </p> <p> <span> </span> </p> <p> 本课程的<span>YOLOv4-tiny</span>使<span>AlexAB/darknet</span>,在<span>Windows10</span>系统上做项目演示。包括:<span>YOLOv4-tiny</span>的网络结构、安装<span>YOLOv4-tiny</span>、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计<span>(mAP</span>计算<span>)</span>和先验框聚类分析。 <span> </span> </p> <p> <span> </span> </p> <p> 除本课程《<span>Windows</span>版<span>YOLOv4-tiny</span>目标检测实战:训练自己的数据集》外,本人推出了有关<span>YOLOv4</span>目标检测的系列课程。请持续关注该系列的其它视频课程,包括:<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测实战:训练自己的数据集》<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测实战:人脸口罩佩戴识别》<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测实战:中国交通标志识别》<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测:原理与源码析》<span></span> </p> <p> <span> <img alt="" src="https://img-bss.csdnimg.cn/202007061503586145.jpg" /></span> </p> <p> <span><img alt="" src="https://img-bss.csdnimg.cn/202007061504169339.jpg" /><br /> </span> </p>
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页