您的位置:首页 > 编程语言 > Java开发

《一元二次方程求解窗口——Java第十三周》

2012-11-27 20:50 225 查看
/* (程序头部注释开始)

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

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

* All rights reserved.

* 文件名称: 《一元二次方程求解窗口——Java第十三周》

* 作 者: 刘江波

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

* 版 本 号: v2.2

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

* 问题描述:

封装一个求一元二次方程根的类SquareEquation,要求考虑解方程的异常,再编写一个窗口类EquationFrame。要求窗口使用三个文本框和一个文本区,其中三个文本框用来显示生更新方程对象的系数,文本区用来显示方程的根。窗口中有一个按钮,用户单击按钮后,程序用文本框中的数据修改方程的系数,并将方程的根显示在文本区中。最后编写
一个程序执行入口进行测试。如下图所示。

* 程序头部的注释结束

*/

SquareEquation类

package week13;

public class SquareEquation {

	double d1,d2,d3,g1,g2;
	String string;
	
	SquareEquation(double d1,double d2,double d3){
		this.d1 = d1;
		this.d2 = d2;
		this.d3 = d3;
	}
	public double getD1() {
		return d1;
	}
	public void setD1(double d1) {
		this.d1 = d1;
	}
	public double getD2() {
		return d2;
	}
	public void setD2(double d2) {
		this.d2 = d2;
	}
	public double getD3() {
		return d3;
	}
	public void setD3(double d3) {
		this.d3 = d3;
	}
	public double getG1() {
		return g1;
	}
	public void setG1(double g1) {
		this.g1 = g1;
	}
	public double getG2() {
		return g2;
	}
	public void setG2(double g2) {
		this.g2 = g2;
	}
	
	public void getResult ()throws Exception
	{	
		double s = d2*d2 - 4*d1*d3;
		if(s < 0)
		{	
			string = "此一元二次方程无解";
//			Exception e = new Exception("运算无实根");
//			throw e;
		}
		else if(s == 0)
		{
			g1 = -d2/(2*d1); 
			
			string = "一元二次方程两根相同,根为:"+ g1;
		}
		else
		{
			g1 =(-d2 + Math.sqrt(s))/(2*d1);
			g2 =(-d2 - Math.sqrt(s))/(2*d1);
			
			string = "一元二次方程两根不相同,根1为:" + g1 + "根2为:" + g2;
		}
	}
	
}


EquationFrame类



package week13;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class EquationFrame extends JFrame implements ActionListener {
	
	public Panel panel;
	public TextField in1,in2,in3;
	public Button b;
	public Label l1,l2,l3;
	public TextArea t1;
	
	public EquationFrame() {
		
		panel = new Panel(new FlowLayout());//设置画布布局
		
		in1 = new TextField(7);
		in2 = new TextField(7);
		in3 = new TextField(7);
		
		l1 = new Label("二次项系数:");
		l2 = new Label("一次项系数:");
		l3 = new Label("常数项系数:");
		
		b = new Button("确   定");
		b.addActionListener(this);//将窗口作为Button的监视器
		
		t1 = new TextArea();
		
		
		panel.add(l1);
		panel.add(in1);
		panel.add(l2);
		panel.add(in2);
		panel.add(l3);
		panel.add(in3);
		panel.add(b);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLayout(new BorderLayout());//设置窗体布局
		this.add(panel, BorderLayout.NORTH);
		this.add(t1,BorderLayout.CENTER);
		this.setBounds(200, 300, 600, 150);
		this.setVisible(true);//设置窗口可见
		this.setTitle("一元二次方程求解");
		//this.setFont(new Font("宋体",Font.PLAIN,20));
		t1.setFont(new Font("宋体",Font.PLAIN,16));
		panel.setFont(new Font("宋体",Font.PLAIN,12));
	}

	//处理事件的接口
	public void actionPerformed(ActionEvent e) {
		SquareEquation square = new SquareEquation(Double.valueOf(this.in1.getText()),
				Double.valueOf(this.in2.getText()),Double.valueOf(this.in3.getText()));
		
		try
		{
			square.getResult();
		}
		catch(Exception e2)
		{
			t1.setText(e2.toString());
		}
		t1.setText(square.string);
	}
	
	
}










内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: