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

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

java求方程的根运行图_Java程序设计(十四)----一个求一元二次方程根相关推荐

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

    * 程序的版权和版本声明部分 * Copyright (c) 2012, 烟台大学计算机学院学生 * All rights reserved. * 作 者: 刘镇 * 完成日期: 2012 年 11 ...

  2. python求一元三次方程的根_【九年级 】知识点8 一元二次方程根的判别式的应用...

    知识点8 一元二次方程根的判别式的应用 [题目预览] [视频讲解] [分析点评] 此题考查一元二次方程根的判别式与一元二次方程根的情况,当判别式的值大于0时,方程有两个不相等的实数根,当判别式的值等于 ...

  3. java类求圆的面积周长_java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题。编写一个应用程序计算圆的周长和面积,设圆的半...

    问题标题 java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题.编写一个应用程序计算圆的周长和面积,设圆的半 2019-5-23来自ip:15.196.194.53的 ...

  4. java怎样用类模板创建对象_java入门(十四) | 面向对象(OOP)之类和对象

    上一期是变量,在java中变量总是无处不在,而变量其意就是可以改变的数,在一般情况下我们可以以变量类型,变量名,变量值来描述它 这一期是给面向对象(OOP)开了一个头,对他的概念,三大特征有了一个基础 ...

  5. 【Java】求一元二次方程根

    [Java]求一元二次方程根 效果 代码 package com.cxl.demo19_Exception; //求一元二次方程根 import java.util.Arrays; import ja ...

  6. java设计求圆的面积周长的代码_java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 、...

    导航:网站首页 > java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 . 时间:2018-11-8 java编程 1.设计一个求圆的面积和 ...

  7. 【组合数学】递推方程 ( 特征方程与特征根 | 特征方程示例 | 一元二次方程根公式 )

    文章目录 一.特征方程与特征根 二.特征方程与特征根 示例 ( 重要 ) 一.特征方程与特征根 常系数线性齐次递推方程标准型 : {H(n)−a1H(n−1)−a2H(n−2)−⋯−akH(n−k)= ...

  8. 【C语言程序设计】C语言实现一元二次方程的求解

    一元二次方程的一般形式: 分析求解过程: 当a=0,不能构成一元二次方程. 当b=0,不一定能构成等式 当c=0,即为恒等式0=0 当a不等于0,可构成一元二次方程,考虑实根和虚根 基于伪代码,实现一 ...

  9. 用java求解一元四次方程_Java程序設計(十四)----一個求一元二次方程根

    * 程序的版權和版本聲明部分 * Copyright (c) 2012, 煙台大學計算機學院學生 * All rights reserved. * 作 者: 劉鎮 * 完成日期: 2012 年 11 ...

最新文章

  1. Java线程优先级的概念
  2. 独家 | 零售业中的惊涛骇浪——人工智能、机器学习和大数据
  3. 通过operator部署redis集群(ucloud版)
  4. 正式版Android P,喜大普奔!一加6正式推送Android P正式版
  5. FP-growth算法高效发现频繁项集
  6. oracle关闭数据库容器,Oracle12cr1新特性之容器数据库(CDB)和可插拔数据库(PDB) 的启动和关闭...
  7. 系统调用和库函数调用
  8. 第十五回(二):文会内战平分秋色 树下阔论使坏心焦【林大帅作品】
  9. android关闭应用及获取运营商ISP,判断sim卡属于哪个运营商
  10. bo dto java vo_Java 键对象 KO (key object) 介绍
  11. 【redis】spring boot利用redis的Keyspace Notifications实现消息通知
  12. linux软链接删除重新创显示,Linux 下如何创建 /删除软连接
  13. .NET编译工具(每日构建或自动化编译)
  14. MySQL中leftjoin和rightjoin的区别
  15. InfoPath 2007表单应用
  16. 叮叮书店 about.html,网页编程HTML+CSS网站设计
  17. electron-rebuild
  18. Python合并PDF、操作图片以及生成验证码
  19. OpenCV学习常用网址
  20. sql 数据库前两列值乘_SQL注入原理和方法汇总

热门文章

  1. python RTL自动生成_利用python自动生成证件照
  2. 收藏 网页设计的常识!
  3. CommandLineRunner和ApplicationRunner区别
  4. 你知道怎么在solidworks工程图中插入表格吗?
  5. 【环境搭建】Ubuntu18.04 nvidia显卡 OpenCL环境搭建
  6. baidumaptrace.php,GitHub - SignalLine/BaiduMapTrace: 百度地图运动轨迹纠偏、去噪、绑路之百度鹰眼sdk服务...
  7. 【Android】eclipse 实现登录、注册、修改密码、数据库操作
  8. 修改 ubnt 路由器固件
  9. mysql 安装与连接数据库_Mysql 安装、登录以及链接数据库
  10. leetcode_714. 买卖股票的最佳时机含手续费