java计算器程序设计报告(含源代码)

合集下载

java实现简易计算器 有报告和源码

java实现简易计算器 有报告和源码

Java课程设计报告题目模拟计算器_____________ _ 学生姓名 _____________________ 指导教师 ______________________ 学院 _信息科学与工程学院_______ 专业班级 ______________ __ 完成时间 _2015-1-17_________ ____ _目录第一章需求分析 (3)1.1 任务要求 (3)1.2 实现的功能........................................ 错误!未定义书签。

第二章总体设计 (4)2.1 总体结构 (4)2.2 模块关系 (4)2.3 按钮功能说明 (4)第三章详细设计 (6)3.1界面设计 (6)3.1.1 窗口设计 (6)3.1.2 面板设计 (8)3.2 计算功能设计 (9)3.2.1 数据显示事件 (10)3.2.2 加减乘除等计算事件 (11)3.2.3 复位、回退、时间显示事件 (12)3.2.4 集合及其计算操作事件 (13)3.2.5 三角函数计算事件 (14)3.3 优化设计 (15)第四章调试分析 (16)4.1 问题分析 (16)4.2 功能改进 (16)第五章运行结果 (18)5.1 功能显示 (18)5.1 细节特色.......................................... 错误!未定义书签。

第六章课程设计总结 (24)参考文献 (24)第一章需求分析1.1任务要求设计实现一个模拟计算器,能进行整数的加、减、乘、除等四则运算。

1.2 实现的功能(1)能进行简单的实数加、减、乘、除运算(2)能进行度数与弧度数的转换,可以进行三角函数sin,cos,tan的计算(3)能实现幂操作,所以乘方,开方,立方,求倒数等都能实现(4)能够求一定范围内的数阶乘(5)能显示数学上常用常数π和e,(6)能实现数据存储即集合操作,可以输入数据,求和,求平均值,方差(7)也能删除集合中的数据(8)能显示时间(9)能复位清0和回退(10)有使用帮助菜单和作者信息(11)有异常报错处理第二章总体设计2.1 总体结构本程序主要涉及的类有CaculatorFrame,窗口框架类,可以添加面板及菜单栏;CaculatorPanel,面板类,往上面添加显示框,按钮等组件,确定组件的布局;各种监听事件类,用来实现计算功能;help和information类,使用帮助类和作者信息类。

Java课程设计报告计算器

Java课程设计报告计算器

Java课程设计报告-计算器第一部分设计的内容要求1.1 Windows自带计算器版面设计1.2计算器计算功能算法实现第二部分设计思想2.1根据图形用户界面设计方法设计计算器版面。

①容器类(窗口--Window类,面板--Panel类),框架类--Frame,Button类,Label类,TextField类等类的构造方法,菜单(菜单栏、菜单项)的建立于应用。

②事件处理机制:监听器类WinClose(),actionPerformed()。

2.2计算器计算功能实现,即按钮监听器的实现自定义变量:x,y为操作数,op为操作符。

根据单击按钮不同进行不同的操作,详见处理按钮单击事件方法actionPerformed(ActionEvent e)(计算功能算法)流程图。

第三部分详细设计3.2处理按钮单击事件方法actionPerformed(ActionEvent e)(计算器计算功能算法)流程图:第四部分运行效果图4.1运行初始图:4.2 计算功能测试图:-1+23.4 将textp中数据赋给yN Y单击”1”~”9”将单击数字插入到textp中数据后,并将textp中数据赋给y 将textp赋0,并str.stelength(0);结束4.2 数学分组功能测试图:第五部分心得与体会5.1 Java是一门实践性很强的编程语言,每学习到一个新的知识点应当及时动手编写程序,提高动手能力,加深对语言的理解。

5.2 根据Java图形用户界面设计方法设计计算器版面有很多种设计方法,学习过程中应灵活变通,使版面的设计更简单易懂。

5.3 本次设计的计算器还有不足之处,首先还没有实现科学型的计算功能,其次还没有键盘输入功能,因此还应继续努力,更加完善计算器的功能。

第六部分附录6.1计算器计算功能算法(按钮"="):if(e.getSource()==b26) // "="{str.setLength(0);switch(op){case 0 :if(flag==1)textp.setText(String.valueOf(x+y));else{str.setLength(0);str.append(x+y);fun();}break;case 1 :if(flag==1)textp.setText(String.valueOf(x-y)); else{str.setLength(0);str.append(x-y);fun();}break;case 2 :if(flag==1)textp.setText(String.valueOf(x*y)); else{str.setLength(0);str.append(x*y);fun();}break;case 3 :if(y==0){textp.setText("除数不能为零");str.setLength(0);y=0;}else{if(flag==1)textp.setText(String.valueOf(x/y)); else{str.setLength(0);str.append(x/y);fun();}}break;}}6.2 fun()函数(数学分组功能)public void fun(){flag=0;int t=0;StringBuffer temp;String sstr=str.toString();if(sstr.trim().indexOf("-")==1){temp=new StringBuffer(str.substring(1));t=1;}elsetemp=new StringBuffer(str.substring(0));if(sstr.trim().indexOf(".")==-1){int j=temp.length();for(int i=j;i>3;){temp.insert(i-3,",");i=i-3;}if(t==0)textp.setText(temp.toString());elsetextp.setText('-'+temp.toString());}else{int i=sstr.indexOf('.');StringBuffer s1=new StringBuffer(sstr.substring(0,i));StringBuffer s2=new StringBuffer(sstr.substring(i+1));for(int j=s1.length();j>3;){s1.insert(j-3,",");j=j-3;}if(t==0)textp.setText(s1.toString()+'.'+s2.toString());elsetextp.setText('-'+s1.toString()+'.'+s2.toString());}}。

用JAVA编写的计算器程序的设计报告

用JAVA编写的计算器程序的设计报告

目录目录 (1)1 需求分析 (1)1.1 计算器的基本功能: (1)1.1.1 加法运算:用数字按钮和“+”按钮进行运算; (1)1.1.2 减法运算:用数字按钮和“-”按钮进行运算; (1)1.1.3 乘法运算:用数字按钮和“*”按钮进行运算; (1)1.1.4 除法运算:用数字按钮和“/”按钮进行运算; (1)1.2 退格键和清零键: 用”Backspace”和”C”按钮实现; (1)1.3 计算器的科学计算方法: (1)1.3.1 开方:用数字按钮和“Sqrt”按钮进行运算; (1)1.3.2 百分比:用数字按钮和“%”按钮进行运算; (1)1.3.3 求倒数:用数字按钮和“1/x”按钮进行运算; (1)2 设计 (2)2.1 用户界面设计 (2)2.1.1 该计算器程序的设计:用户界面包括Swing组件,不过程序中大都使用的是AWT组件. import java.awt.*; (2)2.1.2 在AWT组件, (2)2.1.3 这个界面设计中包含了两个接口,单击事件监听器接ActionListener口和键盘事件监听器接口(KeyListener). (4)2.1.4 程序设计中,使用了布局管理: (4)2.2 概要设计 (4)2.2.1 Calculator类中的类名是Calculator.它的功能是使用图形用户来实现计算器的界面设计和运算功能以及一些科学运算方法. (4)2.2.2 main主类.中调用了cal.display来实现计算器的功能 . (4)3 实现 (4)4 测试 (16)4.1 实现加法运算:4+12=16 (17)4.2 实现减法运算:22-11=11 (17)4.3 实现乘法运算:3*9=27 (18)4.4 实现除法运算:64/32=2 (18)4.5 用”C’实现清零功能: (19)4.6 用”Backspace”实现退格功能: (20)4.7 求倒数:1/4=0.25 (20)5 总结和体会............................................... 错误!未定义书签。

JAVA课程设计简单的计算器(含代码)

JAVA课程设计简单的计算器(含代码)

Java程序课程设计任务书一、主要任务与目标1. 掌握java语言2. 创建一个简单的计算器,具有简单人机交互界面,易于操作,便于进行数据之间的简单运算。

二、具体要求(包括技术要求等):1)能够实现基本的加、减、乘、除四则运算及开方,乘方运算;2)如输入数据时,出现错误,可以修改;3)运算结果能正确显示;可以清零;4)拥有登陆注册功能;5)可以查看历史记录;学习并掌握以下技术:Java、awt,swing等熟练使用以下开发工具:Jdk,JCreate 等实现计算器的上述的功能。

三、计划进度1.12月28日—12月29日:搜集资料、查阅文献,确定选题2.12月30日--12月31日:需求分析,系统设计,系统功能模块完善3.1月1日--1月3日:编程实现系统、系统测试与修改4.1月4日-- 1月6日:课程设计报告撰写5.1月7日-- 1月8日:课程设计报告答辩四、主要参考文献[1] 耿祥义,张跃平.java大学实用教程(第二版).电子工业出版社.2008年5月目录JA V A程序课程设计任务书 (I)目录 (II)第1章引言 (1)1.1课程设计内容 (1)1.2任务分工 (1)第2章计算器定义 (2)2.1计算器登陆注册界面概述 (2)2.1.1 计算器功能概述 (2)2.1.2 计算结果的储存与查看功能概述 (2)2.2本章小结 (2)第3章计算器的具体实现 (3)3.1界面设计 (3)3.1.1用户登陆界面图 (3)3.1.3 计算器主界面 (8)3.2计算功能实现 (9)3.4本章小结 (14)第4章结束语 (14)致谢 (15)参考文献 (15)附录源代码 (15)/****************引用数据包里的类与方法******************************/ (15)第1章引言1.1 课程设计内容这是我组设计的计算器会有一些独特的功能,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个功能:(1)数据计算处理功能点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除四则运算及三角函数,开方,乘方运算;如果输入有误时可以按C撤销后重新输入新数据,有储存修改键;(2)查询功能查询功能可以迅速方便地查找到相应时段的执行的操作及结果。

JAVA编写的计算器源代码

JAVA编写的计算器源代码

JAVA编写的计算器源代码// Calculator.javaimport javax.swing.*; // 引入swing库import java.awt.*; // 引入awt库import java.awt.event.*; // 引入awt.event库public class Calculator extends JFrame implements ActionListener//定义按钮private JButton zero;private JButton one;private JButton two;private JButton three;private JButton four;private JButton five;private JButton six;private JButton seven;private JButton eight;private JButton nine;private JButton point;private JButton equal; private JButton plus; private JButton minus; private JButton multiply; private JButton divide; private JButton backspace; private JButton ac;private JButton ce;private JButton sqrt; private JButton sqr;private JButton plus_minus; private JButton delete; private JButton sin;private JButton cos;private JButton tan;private JButton log;private JButton nfactorial; private JButton cubic; private JButton coln;private JButton factorial;//定义文本框private JTextField resulttext;// 定义boolean变量boolean clrdisp = true; // 昵称确定是否清除计算器显示boolean isCalculate = false; // 是否可以执行计算// 定义String变量,用于存储操作符String optr;//定义存储第一个操作数double num1;//初始化构造函数public Calculato//设置布局setLayout(new BorderLayout();//创建面板JPanel northPanel = new JPanel(;JPanel centerPanel = new JPanel(;JPanel southPanel = new JPanel(;//设置面板布局northPanel.setLayout(new FlowLayout(); centerPanel.setLayout(new GridLayout(4, 5)); southPanel.setLayout(new FlowLayout();//设置计算器显示resulttext = new JTextField(28); northPanel.add(resulttext);resulttext.setEditable(false);//初始化按钮zero = new JButton("0");one = new JButton("1");two = new JButton("2");three = new JButton("3");four = new JButton("4");five = new JButton("5");six = new JButton("6");seven = new JButton("7");eight = new JButton("8");nine = new JButton("9");point = new JButton(".");equal = new JButton("=");plus = new JButton("+");minus = new JButton("-"); multiply = new JButton("*"); divide = new JButton("/"); backspace = new JButton("<-"); ac = new JButton("AC");ce = new JButton("CE");sqrt = new JButton("sqrt");sqr = new JButton("sqr");plus_minus = new JButton("+/-");。

java课设计算器报告

java课设计算器报告

java课设计算器报告随着计算机的快速发展,计算机科学正在成为21世纪最重要的学科之一。

同时,作为计算机科学的一部分,Java语言也正在发展壮大。

因此,Java的课程也随之增加,如程序设计,软件工程,数据库,机器学习等等。

作为一名Java专业的学生,在学习课程的同时,我也做了一次课程设计,即实现一个Java算法计算器,如加,减,乘,除以及整数,小数,次方,根号等功能。

首先,我们需要完成一些准备工作,即使用Java语言实现功能。

为了实现上述功能,我们按照以下步骤进行:首先,使用if..else 语句来判断输入是操作数还是操作符;其次,使用switch语句来实现操作;最后,使用System.out.print()函数将结果显示在控制台中。

在实现完上述步骤之后,算法计算器功能就完成了,我们可以开始进行测试。

在测试过程中,我们输入各种操作数和操作符,并检查计算器是否能够正确计算出结果,并且检查算法是否能够实现各种功能,如加减乘除等。

我们最终实现了加减乘除,整数,小数,次方,根号等功能,在测试中结果都正确,证明算法可以实现预期的功能。

最后,总结一下这次实现Java算法计算器的过程:首先,我们使用if..else语句和switch语句来实现功能;其次,我们使用System.out.print()函数来显示结果;最后,在测试中结果都正确,证明算法可以实现预期的功能。

本次实验表明,当我们使用编程语言实现算法时,可以正确地实现我们预期的功能。

本次实验也使我对Java语言有了更深的理解,并且也使我对算法的原理有了更深的认识。

综上所述,我们实现的Java算法计算器可以满足本次实验的需要,具有正确的功能,并且在实验过程中,我们也对算法和Java语言都有了更深的了解。

java课程设计--计算器(带源码)

java课程设计--计算器(带源码)
p2.add(b6);
b6.addActionListener(this);
p2.add(b14);
b14.addActionListener(this);
p2.add(b7);
b7.addActionListener(this);
p2.add(b8);
b8.addActionListener(this);
5.实验方法与步骤:
程序源码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.util.*;
publicclassCalculatorimplementsActionListener {
JButtonb1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,
sum=sum* d;
tf.setText(String.valueOf(sum));
}elseif(("/").equals((String)stElement())) {
sum=sum/ d;
tf.setText(String.valueOf(sum));
}elseif(("=").equals((String)stElement())) {
}
if(e.getActionCommand() =="x")//乘号的实现;
{
if(("+").equals((String)stElement())
|| ("-").equals((String)stElement())

java 计算器课程设计报告包含代码

java 计算器课程设计报告包含代码

课题名称:简单计算器的应用学生指导教师课题名称简单计算器的应用设计时间设计地点设计目的一、课题介绍1、课题要求(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;(2)完成整数、实数的四则运算(加、减、乘、除);(3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。

2、课题设计思想对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。

文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。

布局设计好后再添加按钮事件。

对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。

这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算;还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按Clear撤销后重新输入新数据。

二、详细设计过程1、界面设计界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用awt中的BorderLayout和GridLayout布局管理方式,窗体名称jisuan继承JFrameActionListener接口,并实现public void actionPerformed(ActionEvent e){}方法。

定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。

定义变量double memoryd;//使用内存中存储的数字;DecimalFormat df;//保留小数位数。

java实验报告-计算器附源代码

java实验报告-计算器附源代码

面向对象程序设计实验报告学院计算机科学与技术学院专业计算机科学与技术学号姓名指导教师2016 年 1 月 1 日一、实验目的参照Windows计算器功能,用java语言编写一个图形化计算器程序,实现加、减、乘、除等运算。

二、实验题目Java计算器的编写三、实验内容import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends JFrame implements ActionListener {//定义字符型数组,存放按钮字符private final String[] str = { "sqrt","+/-","CE","C","7", "8", "9", "/", "4", "5", "6", "*", "1","2", "3", "-", "0",".", "=", "+" };//定义按钮数组,用于实现上面的按钮字符JButton[] buttons = new JButton[str.length];//定义文本行,初始显示0JTextField display = new JTextField("0");//计算器构造函数public Calculator() {super("计算器");//panel1是集合了数字和运算符的面板JPanel panel1 = new JPanel(new GridLayout(5, 4)); for (int i = 0; i < str.length; i++) {//把按钮数组加进来buttons[i] = new JButton(str[i]);panel1.add(buttons[i]);}this.addWindowListener(new WinClose());//panel2是文本域和归零面板JPanel panel2 = new JPanel(new BorderLayout()); panel2.add("Center", display);getContentPane().setLayout(new BorderLayout());getContentPane().add("North", panel2);getContentPane().add("Center", panel1);// 为每个数字和运算符按钮添加事件监听器for (int i = 0; i < str.length; i++)buttons[i].addActionListener(this);//为文本域添加事件监听器display.addActionListener(this);//设置窗口位置setBounds(500, 200, 400, 400);//设置框架不能改变大小setResizable(false);//设置组件可见setVisible(true);//调整此窗口的大小,以适合其子组件的首选大小和布局 pack();}//value用来记录当前文本域的数值double value=0;public void actionPerformed(ActionEvent e) {String label = e.getActionCommand();if(label.equals("CE")){display.setText("");}else if(label.equals("C")){handleC();}else if(label.equals("sqrt")){value=Double.parseDouble(display.getText());if(value<0){display.setText("负数不存在平方根!");}else{value=Math.sqrt(value);display.setText(String.valueOf(value));}}else if(label.equals("+/-")){value=Double.parseDouble(display.getText())*(-1);display.setText(String.valueOf(value));}else if ("0123456789.".indexOf(label) >= 0)/*("0123456789.".indexOf(label) >= 0)意思是当前输入的数字是“0123456789”中的一个时,响应输入数字事件,和下面同效果* (label.equals("0")|| label.equals("1")|| label.equals("2")|| label.equals("3")|| label.equals("4")|| label.equals("5")|| label.equals("6")||label.equals("7")||label.equals("8")||label.equals("9")||label.equals("."))*/handleNumber(label);elsehandleOperator(label);}//设置布尔型变量,用于标记是否是第一次按下小数点,初始为是boolean isFirstDigit = true;//响应数字按钮public void handleNumber(String key) {if (isFirstDigit)display.setText(key);else if ((key.equals(".")) && (display.getText().indexOf(".") < 0))display.setText(display.getText() + ".");else if (!key.equals("."))display.setText(display.getText() + key);isFirstDigit = false;}//归零按钮C响应public void handleC() {display.setText("0");isFirstDigit = true;operator = "=";}Double number = 0.0;String operator = "=";//响应运算符按钮public void handleOperator(String key) {if (operator.equals("+")){number += Double.valueOf(display.getText()); display.setText(String.valueOf(number));}else if (operator.equals("-")){number -= Double.valueOf(display.getText()); display.setText(String.valueOf(number));}else if (operator.equals("*")){number *= Double.valueOf(display.getText());display.setText(String.valueOf(number));}else if (operator.equals("/")){if(Double.parseDouble(display.getText())==0){display.setText("error:除数不能为0");}else{number /= Double.valueOf(display.getText());display.setText(String.valueOf(number));}}else if (operator.equals("=")){number = Double.valueOf(display.getText()); display.setText(String.valueOf(number));}operator = key;isFirstDigit = true;}public static void main(String[] args) {//程序入口,新建计算器new Calculator();}}//实现窗口事件监听器接口class WinClose implements WindowListener{public void windowClosing(WindowEvent ev){System.exit(0);}public void windowsOpend(WindowEvent ev){}public void windowActivated(WindowEvent ev){}public void windowsDeactivated(WindowEvent ev){}public void windowClosed(WindowEvent ev){}public void windowIconified(WindowEvent ev){}public void windowDeiconified(WindowEvent ev){}@Overridepublic void windowDeactivated(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowOpened(WindowEvent e) {// TODO Auto-generated method stub}}四、实验结果及分析(一、)程序功能测试:1、加法、减法、乘法、除法测试:20+0.5=20.5100-10.5=89.520*20=4000/2=02/0报错1/2=0.52、Sqrt(开方)测试:√25=5 负数开方报错3、+/-测试:-2+1.5=-0.54、CE(清除当前输入项)和C(清除整个计算式)测试:计算10+20=30时输入10+22然后按下CE清除22,重新输入20。

(完整word版)Java计算器实验报告

(完整word版)Java计算器实验报告

一、目标:通过Java程序开发实训使学生掌握《面向对象程序设计(Java)》课堂讲授的内容,灵活运用到Java程序的开发与设计中。

二、要求:按时参加Java程序开发实训训练,不得迟到和早退;独立完成程序设计;按要求撰写实践报告。

三、详细内容:使用《面向对象程序设计(Java)》课程讲授内容,编写一个简单的计算器,要求实现如下功能:1.进行图形界面设计通过图形界面设计,掌握JFrame类、JPanel类、5种布局管理器、文本框、标签及按钮的使用方法。

2.实现计算器的基本功能包括加减乘除四则运算、倒数、平方根及清除结果等功能。

3.实现计算器的存储计算功能包括存储中间结果(MS)、使用中间结果(MR)、累加中间结果(M+)及清除中间结果(MC)的功能。

4.计算器的扩展功能包括乘方、对数、正弦、余弦、正切、余切、反正弦、反余弦、反正切、反余切及2进制、8进制、16进制、10进制之间的相互转换等功能.四、源代码import java。

awt.BorderLayout;import java.awt.Color;import java。

awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java。

awt.event.ActionListener;import java.awt。

event。

KeyEvent;import java.text.DecimalFormat;import javax。

swing.JButton;import javax.swing.JFrame;import javax。

swing.JLabel;import javax。

swing.JMenu;import javax.swing。

JMenuBar;import javax。

swing。

JMenuItem;import javax。

课程设计报告(java版的计算器源代码)

课程设计报告(java版的计算器源代码)

程序功能简介:从最基本的加、减、乘、除,到基本数学函数处理,再到数的进制转换处理。

代码如下/*文件名:Calculator.java*说明:简易科学计算器*/import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends Frame implements ActionListener, WindowListener{private Container container;private GridBagLayout layout;private GridBagConstraints constraints;private JTextField displayField; //计算结果显示区private String lastCommand; //保存+,-,*,/,=命令0private double result; //保存计算结果private boolean start; //判断是否为数字的开始private JMenuBar menubar;private JMenuItem m_exit,m2_ejz,m2_bjz;private Dialog dialog;private Label label_dialog;private JButton button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0,button_plus,button_minus,button_multiply,button_divide,button_point,button_equal,button_log,button_tan,button_cos,button_sin,button_exp;public Calculator() //构造方法设置布局、为按钮注册事件监听器{super("Calculator");this.setLocation(240,200);this.setSize(350,300);this.setResizable(true);this.setLayout(new GridLayout(7,1));this.addmyMenu(); //调用成员方法添加菜单displayField=new JTextField(30);this.add(displayField);displayField.setEditable(true);start=true;result=0;lastCommand = "=";JPanel panel0=new JPanel();panel0.setLayout(new GridLayout(1,4,4,4));JPanel panel1=new JPanel();panel1.setLayout(new GridLayout(1,5,4,4));this.add(panel1);button_sqrt=new JButton("sqrt");button_plusminus=new JButton("+/-");button_exp=new JButton("exp");button_CE=new JButton("退格");button_cancel=new JButton("C");JPanel panel2=new JPanel();panel2.setLayout(new GridLayout(1,5,4,4));this.add(panel2);button_7=new JButton("7");button_8=new JButton("8");button_9=new JButton("9");button_log=new JButton("log");button_divide=new JButton("/");JPanel panel3=new JPanel();panel3.setLayout(new GridLayout(1,5,4,4));this.add(panel3);button_4=new JButton("4");button_5=new JButton("5");button_6=new JButton("6");button_tan=new JButton("tan");button_multiply=new JButton("*");JPanel panel4=new JPanel();panel4.setLayout(new GridLayout(1,5,4,4));this.add(panel4);button_1=new JButton("1");button_2=new JButton("2");button_3=new JButton("3");button_cos=new JButton("cos");button_minus=new JButton("-");JPanel panel5=new JPanel();panel5.setLayout(new GridLayout(1,5,4,4));this.add(panel5);button_0=new JButton("0");button_point=new JButton(".");button_equal=new JButton("=");button_sin=new JButton("sin");button_plus=new JButton("+");panel1.add(button_sqrt);panel1.add(button_plusminus);panel1.add(button_exp);panel1.add(button_CE);panel1.add(button_cancel);panel2.add(button_7);panel2.add(button_8);panel2.add(button_9);panel2.add(button_log);panel2.add(button_divide);panel3.add(button_4);panel3.add(button_5);panel3.add(button_6);panel3.add(button_tan);panel3.add(button_multiply);panel4.add(button_1);panel4.add(button_2);panel4.add(button_3);panel4.add(button_cos);panel4.add(button_minus);panel5.add(button_0);panel5.add(button_point);panel5.add(button_equal);panel5.add(button_sin);panel5.add(button_plus);button_sqrt.addActionListener(this);button_plusminus.addActionListener(this);button_exp.addActionListener(this);button_CE.addActionListener(this);button_cancel.addActionListener(this);button_7.addActionListener(this);button_8.addActionListener(this);button_9.addActionListener(this);button_log.addActionListener(this);button_divide.addActionListener(this);button_4.addActionListener(this);button_5.addActionListener(this);button_6.addActionListener(this);button_tan.addActionListener(this);button_multiply.addActionListener(this);button_1.addActionListener(this);button_2.addActionListener(this);button_3.addActionListener(this);button_cos.addActionListener(this);button_minus.addActionListener(this);button_0.addActionListener(this);button_point.addActionListener(this);button_equal.addActionListener(this);button_sin.addActionListener(this);button_plus.addActionListener(this);this.addWindowListener(new WinClose()); //注册窗口监听器this.setVisible(true);}private void addmyMenu() //菜单的添加{JMenuBar menubar=new JMenuBar();this.add(menubar);JMenu m1=new JMenu("选项");JMenu m2=new JMenu("进制转换");JMenuItem m1_exit=new JMenuItem("退出");m1_exit.addActionListener(this);JMenuItem m2_ejz=new JMenuItem("二进制");m2_ejz.addActionListener(this);JMenuItem m2_bjz=new JMenuItem("八进制");m2_bjz.addActionListener(this);JMenu m3 = new JMenu(" 帮助");JMenuItem m3_Help = new JMenuItem("用法");m3_Help.addActionListener(this);dialog = new Dialog(this,"提示",true); //模式窗口dialog.setSize(240,80);label_dialog = new Label("",Label.CENTER); //标签的字符串为空,居中对齐dialog.add(label_dialog);dialog.addWindowListener(this); //为对话框注册窗口事件监听器m1.add(m1_exit);menubar.add(m1);m2.add(m2_ejz);m2.add(m2_bjz);menubar.add(m2);m3.add(m3_Help);menubar.add(m3); }public void actionPerformed(ActionEvent e) //按钮的单击事件处理方法{if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||e.getSource().equals(button_3)||e.getSource().equals(button_4)||e.getSource().equals(button_5)|| e.getSource().equals(button_6)||e.getSource().equals(button_7)|| e.getSource().equals(button_8)||e.getSource().equals(button_9) ||e.getSource().equals(button_0)||e.getSource().equals(button_point)||e.getSource().equals(button_plusminus)||e.getSource().equals(button_cancel)||e.getSource().equals(button_CE)){ //非运算符的处理方法String input=e.getActionCommand();if (start){displayField.setText("");start=false;if(input.equals("+/-"))displayField.setText(displayField.getText()+"-");}if(!input.equals("+/-")){String str=displayField.getText();if(input.equals("退格")) //退格键的实现方法{if(str.length()>0)displayField.setText(str.substring(0,str.length()-1));}else if(input.equals("C")) //清零键的实现方法{displayField.setText("0");start=true;}elsedisplayField.setText(displayField.getText()+input);}}else if (e.getActionCommand()=="二进制") //二进制的转换{int n=Integer.parseInt(displayField.getText());displayField.setText(Integer.toBinaryString(n));}else if (e.getActionCommand()=="八进制") //八进制的转换{int n=Integer.parseInt(displayField.getText());displayField.setText(Integer.toOctalString(n));}else if (e.getActionCommand()=="退出") //选项中退出的处理方法{System.exit(0);}else if (e.getActionCommand()=="用法") //按下'帮助'菜单栏中用法的处理方法{label_dialog.setText("sqrt,exp等键是先输运算符再输数字\n");dialog.setLocation(400,250);dialog.setVisible(true);}else //各运算符的识别{String command=e.getActionCommand();if(start){lastCommand=command;}else{calculate(Double.parseDouble(displayField.getText()));lastCommand=command;start=true;}}}public void calculate(double x) //各运算符的具体运算方法double d=0;if (lastCommand.equals("+"))result+= x;else if (lastCommand.equals("-"))result-=x;else if (lastCommand.equals("*"))result*=x;else if (lastCommand.equals("/"))result/=x;else if (lastCommand.equals("="))result=x;else if (lastCommand.equals("sqrt")){d=Math.sqrt(x);result=d;}else if (lastCommand.equals("exp")){d=Math.exp(x);result=d;}else if (lastCommand.equals("log")){d=Math.log(x);result=d;}else if (lastCommand.equals("tan")){d=Math.tan(x);result=d;}else if (lastCommand.equals("cos")){d=Math.cos(x);result=d;}else if (lastCommand.equals("sin")){d=Math.sin(x);result=d;}displayField.setText(""+ result);}public void windowClosing(WindowEvent e){if(e.getSource()==dialog)dialog.setVisible(false); //隐藏对话框 elseSystem.exit(0);public void windowOpened(WindowEvent e) { }public void windowActivated(WindowEvent e) { }public void windowDeactivated(WindowEvent e) { }public void windowClosed(WindowEvent e) { }public void windowIconified(WindowEvent e) { }public void windowDeiconified(WindowEvent e) { }public static void main(String args[]){Calculator calculator=new Calculator();}}class WinClose implements WindowListener{public void windowClosing(WindowEvent e) //单击窗口关闭按钮时触发并执行实现窗口监听器接口中的方法{System.exit(0); //结束程序运行}public void windowOpened(WindowEvent e){}public void windowActivated(WindowEvent e){}public void windowDeactivated(WindowEvent e){}public void windowClosed(WindowEvent e){}public void windowIconified(WindowEvent e){}public void windowDeiconified(WindowEvent e){}}运行结果截图:程序功能实现:1.运用两个面板的叠加做出界面。

Java程序设计实验报告_2

Java程序设计实验报告_2

Java程序设计实验报告姓名:学号:班级:课题名称(附程序名):JAVA计算器(Calculator.java)一、实验目的通过JAVA图形接口的应用,编写出一图形界面的科学计算器;熟悉JAVA程序开发的一般步骤,掌握事件驱动,并能掌握一定的Java 编程能力,在实践中能感受Java的奥秘!同时检验自己的学习成果。

二、实验任务具有加减乘除的计算器,可以延伸到开方等其他的一些计算。

三、开发工具与平台Microsoft Visual Studio 2005四、设计思路:1)界面设计2)逻辑设计首先明确该实验设计的要求实现的基本功能,其次设计布局,将空间划分为由行和列组成的网格单元,每个单元放一个组件,网格单元大小可以不同,尽量将相同属性的按钮放在一个区域,方便操作。

3)软件调试与测试经过调试之后,能实现基本的四则运算,并能实现开方和消除错误的数。

4)软件设计优化该软件的界面应该更加流畅,同时我相信随着自己只是的日益丰富,开发软件的速度更快,效率更高,功能更加全面!5)实验总结不足:没有实现Mc,MR,MS,M+以及菜单栏几个功能,有待进一步完善。

这样才能够完成自己的第一个应用软件设计!优点:通过本次实验设计,大体了解了Java图形接口的应用,并在过程中增强了对程序的调试能力。

对JAVA有了更深一步的理解,学会如何解决问题,如何坚持对程序的调试,同时也增强了自己学习Java的信心。

五、附录源程序如下:import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.GridLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JPanel;import javax.swing.JTextField;public class Calculator extends JFrame implements ActionListener { boolean init = true;boolean isMath = false;boolean clear = true;boolean clickable = true;double qian;String fuhao;int all = 0;JTextField text = new JTextField(25);JButton bM = new JButton();JButton bMC = new JButton("MC");JButton bMR = new JButton("MR");JButton bMS = new JButton("MS");JButton bMADD = new JButton("M+");JButton b0 = new JButton("0");JButton b1 = new JButton("1");JButton b2 = new JButton("2");JButton b3 = new JButton("3");JButton b4 = new JButton("4");JButton b5 = new JButton("5");JButton b6 = new JButton("6");JButton b7 = new JButton("7");JButton b8 = new JButton("8");JButton b9 = new JButton("9");JButton bNOP = new JButton("+/-");JButton bDot = new JButton(".");JButton bDiv = new JButton("/");JButton bMul = new JButton("*");JButton bSub = new JButton("-");JButton bAdd = new JButton("+");JButton bSprt = new JButton("sprt");JButton bMod = new JButton("%");JButton bDao = new JButton("1/x");JButton bEqual = new JButton("=");JButton bBackspace = new JButton("Backspace"); JButton bCE = new JButton("CE");JButton bC = new JButton("C");public Calculator() {this.setTitle("计算器");JMenuBar mainMenu = new JMenuBar();setJMenuBar(mainMenu);JMenu editMenu = new JMenu("编辑");JMenu viewMenu = new JMenu("查看");JMenu helpMenu = new JMenu("帮助");mainMenu.add(editMenu);mainMenu.add(viewMenu);mainMenu.add(helpMenu);JPanel jpDisplay = new JPanel();JPanel jpInput = new JPanel();JPanel jpLeft = new JPanel();JPanel jpRight = new JPanel();text.setText("0.");text.setHorizontalAlignment(JTextField.RIGHT); jpDisplay.add(text);bM.addActionListener(this);bMC.addActionListener(this);bMS.addActionListener(this);bMR.addActionListener(this);bMADD.addActionListener(this);jpLeft.setLayout(new GridLayout(5, 1)); jpLeft.add(bM);jpLeft.add(bMC);jpLeft.add(bMR);jpLeft.add(bMS);jpLeft.add(bMADD);JPanel jpInnerN = new JPanel();JPanel jpInnerS = new JPanel();bBackspace.addActionListener(this);bCE.addActionListener(this);bC.addActionListener(this);jpInnerN.setLayout(new GridLayout(1, 3)); jpInnerN.add(bBackspace);jpInnerN.add(bCE);jpInnerN.add(bC);b0.addActionListener(this);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);bNOP.addActionListener(this);bDot.addActionListener(this);bDiv.addActionListener(this);bMul.addActionListener(this);bSub.addActionListener(this);bAdd.addActionListener(this);bSprt.addActionListener(this);bMod.addActionListener(this);bDao.addActionListener(this);bEqual.addActionListener(this);jpInnerS.setLayout(new GridLayout(4, 5));jpInnerS.add(b7);jpInnerS.add(b8);jpInnerS.add(b9);jpInnerS.add(bDiv);jpInnerS.add(bSprt);jpInnerS.add(b4);jpInnerS.add(b5);jpInnerS.add(b6);jpInnerS.add(bMul);jpInnerS.add(bMod);jpInnerS.add(b1);jpInnerS.add(b2);jpInnerS.add(b3);jpInnerS.add(bSub);jpInnerS.add(bDao);jpInnerS.add(b0);jpInnerS.add(bNOP);jpInnerS.add(bDot);jpInnerS.add(bAdd);jpInnerS.add(bEqual);jpRight.setLayout(new BorderLayout());jpRight.add(jpInnerN, BorderLayout.NORTH);jpRight.add(jpInnerS, BorderLayout.CENTER);jpInput.setLayout(new BorderLayout());jpInput.add(jpLeft, BorderLayout.WEST);jpInput.add(jpRight, BorderLayout.CENTER);Container pane = this.getContentPane();pane.setSize(333, 208);this.setLocation(300, 200);this.setLayout(new BorderLayout());pane.add(jpDisplay, BorderLayout.CENTER);pane.add(jpInput, BorderLayout.SOUTH);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.pack();this.setVisible(true);}public void actionPerformed(ActionEvent e) {if (init)this.text.setText("0.");init = false;Object source = e.getSource();if (source == bBackspace) {String s = text.getText();text.setText("");for (int i = 0; i < s.length() - 1; i++) { char a = s.charAt(i);text.setText(text.getText() + a);}System.out.println("backspace");}if (source == bCE) {text.setText("0.");clear = true;init = true;System.out.println("CE");}if (source == bC) {text.setText("0.");clear = true;init = true;System.out.println("C");}if (source == bM) {System.out.println("M");}if (source == bMC) {System.out.println("MC,功能末实现");}if (source == bMR) {System.out.println("MR,功能末实现");}if (source == bMS) {System.out.println("MS,功能末实现");}if (source == bMADD) {System.out.println("M+,功能末实现");}if (source == b0) {System.out.println("0");if (clear == false)// 判断是否点击了符号位text.setText("");text.setText(text.getText() + "0");}if (source == b1) {if (clear == false)text.setText("");text.setText(text.getText() + "1");clear = true;// 第二次不在清空(前二句)}if (source == b2) {System.out.println("2");if (clear == false)text.setText("");text.setText(text.getText() + "2");clear = true;}if (source == b3) {System.out.println("3");if (clear == false)text.setText("");text.setText(text.getText() + "3");clear = true;}if (source == b4) {System.out.println("4");if (clear == false)text.setText("");text.setText(text.getText() + "4");clear = true;}if (source == b5) {System.out.println("5");if (clear == false)text.setText("");text.setText(text.getText() + "5");clear = true;}if (source == b6) {System.out.println("6");if (clear == false)text.setText("");text.setText(text.getText() + "6");clear = true;}if (source == b7) {System.out.println("7");if (clear == false)text.setText("");text.setText(text.getText() + "7");clear = true;}if (source == b8) {System.out.println("8");if (clear == false)text.setText("");text.setText(text.getText() + "8");clear = true;}if (source == b9) {System.out.println("9");if (clear == false)text.setText("");text.setText(text.getText() + "9");clear = true;}try{if (source == bNOP) {System.out.println("+/-");boolean isNumber = true;String s = text.getText();for (int i = 0; i < s.length(); i++)if (!(s.charAt(i) >= '0' && s.charAt(i) <= '9'|| s.charAt(i) == '.' || s.charAt(i) == '-')) {isNumber = false;break;}if (isNumber == true) {// 如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-') {text.setText("");for (int i = 1; i < s.length(); i++) {char a = s.charAt(i);text.setText(text.getText() + a);}}// 如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsetext.setText('-' + s);}}if (source == bDot) {System.out.println(".");clickable = true;for (int i = 0; i < text.getText().length(); i++)if ('.' == text.getText().charAt(i)) {clickable = false;break;} // 第一层判断是否里面含有小数点;if (clickable == true)// 第二层判断text.setText(text.getText() + ".");}if (source == bDiv) {System.out.println("/");qian = Double.parseDouble(text.getText());fuhao = "/";clear = false;}if (source == bMul) {System.out.println("*");qian = Double.parseDouble(text.getText());fuhao = "*";clear = false;}if (source == bSub) {System.out.println("-");qian = Double.parseDouble(text.getText());fuhao = "-";clear = false;}if (source == bAdd) {System.out.println("+");qian = Double.parseDouble(text.getText());fuhao = "+";clear = false;}if (source == bSprt) {System.out.println("sprt");String s = text.getText();if (s.charAt(0) == '-') {text.setText("负数不能开根号");} elsetext.setText(Double.toString(ng.Math.sqrt(Double.parseDouble(text.getText()))));clear = false;}if (source == bMod) {System.out.println("%,功能末实现");}if (source == bDao) {System.out.println("1/x");if (text.getText().charAt(0) == '0'&& text.getText().length() == 1) {text.setText("除数不能为零");} else {boolean isDec = true;int i, j, k;String s= Double.toString(1 / Double.parseDouble(text.getText()));for (i = 0; i < s.length(); i++)if (s.charAt(i) == '.')break;for (j = i + 1; j < s.length(); j++)if (s.charAt(j) != '0') {isDec = false;break;}if (isDec == true) {String stemp = "";for (k = 0; k < i; k++)stemp += s.charAt(k);text.setText(stemp);} elsetext.setText(s);}clear = false;}if (source == bEqual) {System.out.println("=");Double ss=Double.parseDouble(text.getText());text.setText("");if (fuhao == "+")text.setText(qian + ss + "");if (fuhao == "-")text.setText(qian - ss + "");if (fuhao == "*")text.setText(qian * ss + "");if (fuhao == "/")text.setText(qian / ss + "");clear = false;// 要清空前一次的数据;}}catch (Exception ee) {System.out.println("请正确输入");text.setText("运算出错,给您带来不便,sorry");clear = false;}}public static void main(String[] args) {new Calculator();}}11。

java计算器程序设计报告

java计算器程序设计报告

JAVA 课程设计之计算器设计报告含源代码|计算机数据库课程设计| 精品课程网站设计| 课程设计网报告总结心得本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19 位数,十进制最多可以输入18 位数,十六进制最多可以输入14 位数,backspace 表示退格, clear 表示初始化,在window 下直接运行()即可,界面为灰白对称。

题目:计算器目录1.摘要2.概要设计3.详细设计4.测试分析5.参考文献一、摘要本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19 位数,十进制最多可以输入18位数,十六进制最多可以输入14位数‘backspace表示退格,clear 表示初始化,在window 下直接运行()即可,界面为灰白对称。

二、概要设计(1) 自定义类说明***********************************************************类名: This_number_too_big **作用: 自定义的异常类,用来处理计算结果溢出**继承的父类: Exception 类**实现的接口: 没有***********************************************************class This_number_too_big extends Exception{}ength();harAt(0)=='0'&& ().length()==1)Jimportclass This_number_too_big extends Exception{};static Button btequ=new Button("=");static Button btadd=new Button("+"); static Button btsub=new Button("-");static Button btmul=new Button("*"); static Button btdev=new Button("/");static Button btA=new Button("A");static Button btB=new Button("B");static Button btC=new Button("C");static Button btD=new Button("D");static Button btE=new Button("E");static Button btF=new Button("F");static Checkbox ckb8=new Checkbox(" 八进制");static Checkbox ckb10=new Checkbox("static Checkbox ckb16=new Checkbox("static Button btc=new Button("clear"); static Button btt=new Button("backspace"); public int number=0,length=18;.");(new Font("Serief",,18));(14,33,216,40);(lab);CheckboxGroup grp=new CheckboxGroup();(grp);(grp);(grp);(14,75,55,25) ;(69,75,55,25) ;(124,75,65,25) ;(false);(true);(false);(ckb8);(ckb10);(ckb16);(14,140,120,150);(144,140,40,150);(14,100,170,36);(190,100,40,190);(bt7);(bt8);(bt9);(bt4);(bt5);(bt6);(bt1);(bt2);(bt3);(bt0);(btdot);(btequ);(btadd);(btsub);(btmul);(btdev);(btt);(btc);(btA);(btB);十进制 "); 十六进制(btC);(btD);(btE);(btF);(false);(false);(false) ;(false);(false);(false);(pnl1);(pnl2);(pnl3);(pnl4);(false);(null);(240,300 );(" 计算器");(true);(mainFrame);(mainFrame);(mainFrame);ength();}if(length==14) { (goto_10(),16L));(goto10_8()));number=().length();}ength();}if(length==14) { (goto_10(),16L));number=().length();}ength();}if(length==19) { (goto_10(),8L));(goto10_16()));number=().length();}harAt(0);switch (ch){ case 'c': {("0"); number=0; mark='n'; Refresh=false;}break;harAt(0)=='0'&& ().length()==1) break; if(number{number++;()+ch);} else break;} break;case 'A': enter(); break; case 'B': enter(); break; case 'C': enter(); break; case 'D': enter(); break; case 'E': enter(); break; case 'F': enter(); break;case '.': {if(Refresh==true) {("0"); number=0; Refresh=false;} if().indexOf('.')== -1){number++;()+ch);} else break;}break;case 'b': {if(number==0) break;else{if(--number==0) {("0"); number=0;}else{if (number!=1) ().substring(0,number));else ().charAt(0)));} } }break;case '+': try{ js();} catch(This_number_too_big e) {("0"); number=0; mark='n';Refresh=false; "The number is too big");} break; != -1));lg=(str);!= -1)); lg=(str);while (lg>=j) { ch=lg%j; st=(ch)+st; lg=lg/j;} st=(lg)+st; return st;}harAt(0)=='0'&& ().length()==1) ength();ength();}//end answer() method //}//end class Jsp2003 4.测试分析(1)程序运行情况: 程序正常的响应按钮事件,输入的数值长度受变量length 的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的 E ,当结果太大的时候,有可能超出可能表示的最大值, (结果溢出) ,这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if 语句,如果结果大于某一个值就抛出一个This_number_too_big 类型的类,再使用try-catch ,捕捉输出结果的方法抛出的异常对象。

用JAVA编写的计算器程序的设计报告

用JAVA编写的计算器程序的设计报告

目录目 录 (1)1 需求分析 . (1)1.1 计算器的基本功能: 1.1.1 加法运算: 用数字按钮和“ +” 1.1.2 减法运算: 用数字按钮和“ - ”1.1.3 乘法运算: 用数字按钮和“ *” 1.1.4 除法运算: 用数字按钮和“ / ”按钮进行运算; ........... 1 按钮进行运算; ........... 1 按钮进行运算; .. (1)按钮进行运算; ........... 11.2退格键和清零键:用” Backspace ”和” C'按钮实现; .................1.3 计算器的科学计算方法:1.3.1 开方:用数字按钮和“ Sqrt ”按钮进行运算; .......................... 1 1.3.2 百分比:用数字按钮和“ %”按钮进行运算; ........................... 1 1.3.3求倒数:用数字按钮和“ 1/x ”按钮进行运算; (1)2 设计 .......................................2.1 用户界面设计 ...................................2.1.1 该计算器程序的设计:用户界面包括 Swing 组件,不过程序中大都使用的是 AWT 组件.import java.awt.*; (2)2.1.2 在 AWT 组件, ........................................................ 2 2.1.3这个界面设计中包含了两个接口, 单击事件监听器接 ActionListener口和键盘事件监听器接口 (KeyListener). (4)2.1.4程序设计中 , 使用了布局管理 : (4)2.2 概要设计 (4)2.2.1 Calculator 类中的类名是 Calculator. 它的功能是使用图形用户来实现 计算器的界面设计和运算功能以及一些科学运算方法2.2.2 main 主类.中调用了 cal.display来实现计算器的功能3 实现4 测试4.6 用” Backspace ”实现退格功能 : (20)4.7求倒数 :1/4=0.25 (20)4 164.1实现加法运算: 4+12=16 .... 4.2 实现减法运算:22-11=11 .. 4.3 实现乘法运算: 3*9=27 ....17 17 18 64/32=2 ...............................18 4.5 用” C'实现清零功能: (19)4.4实现除法运算1需求分析(该部分主要阐述所要实现的程序具体具有什么样的功能,要细化,可以用图表作为辅助描述手段)该计算器程序除了具备加减乘除基本功能外,还有清零键C和退格键Backspace,和一些部分的科学计算方法,包括开方、求倒、百分比,程序里面也写了键盘事件监听器接口,不过由于时间仓促,还没能设计出来,所以该计算器不能实现此功能。

Java简单计算器(程序设计报告)

Java简单计算器(程序设计报告)

JA V A课程设计报告哈尔滨哈商业大学JAVA课程设计课程名称:Java程序设计课题名称:简单计算器*名:***学号:************班级:08级软件工程教育2011年10月20日一、实验目的:使用Eclipse软件制作简单计算器,实现加减乘除等基本功能。

二、实验源码:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator {public static void main(String[] args) {EventQueue.invokeLater(new Runnable(){public void run(){CalculatorFrame frame = new CalculatorFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}});}}class CalculatorFrame extends JFrame{public CalculatorFrame(){setTitle("Calculator");CalculatorPanal panel = new CalculatorPanal();add(panel);pack();}}class CalculatorPanal extends JPanel{public CalculatorPanal(){setLayout(new BorderLayout());result =0;lastCommand = "=";start = true;display = new JButton("0");display.setEnabled(false);add(display,BorderLayout.NORTH);ActionListener insert= new InsertAction();ActionListener command=new CommantAction();panel = new JPanel();panel.setLayout(new GridLayout(4,4));addButton("7",insert);addButton("8",insert);addButton("9",insert);addButton("/",command);addButton("4",insert);addButton("5",insert);addButton("6",insert);addButton("*",command);addButton("1",insert);addButton("2",insert);addButton("3",insert);addButton("-",command);addButton("0",insert);addButton(".",insert);addButton("=",command);addButton("+",command);add(panel,BorderLayout.CENTER);}private void addButton(String label,ActionListener listener) {JButton button = new JButton(label);button.addActionListener(listener);panel.add(button);}private class InsertAction implements ActionListener{public void actionPerformed(ActionEvent event){String input = event.getActionCommand();if(start){display.setText("");start= false;}display.setText(display.getText()+input);}}private class CommantAction implements ActionListener{public void actionPerformed(ActionEvent event){String command = event.getActionCommand();if(start){if(command.equals("-")){display.setText(command);start= false;}else lastCommand = command;}else{calculate(Double.parseDouble(display.getText()));lastCommand =command;start =true;}}}public void calculate(double x){if(lastCommand.equals("+")) result +=x;else if(lastCommand.equals("-")) result -=x;else if(lastCommand.equals("*")) result *=x;else if(lastCommand.equals("/")) result /=x;else if(lastCommand.equals("=")) result =x;display.setText(""+result);}private JButton display;private JPanel panel;private double result;private String lastCommand;private boolean start;}三、实验结果:。

Java程序设计计算器含代码设计

Java程序设计计算器含代码设计

Java程序课程设计任务书实用性计算器的设计与开发1、主要内容:开发一个实用型的计算器程序,实现基本的计算功能同时并进行相应的功能拓展,使其具更加人性化的功能。

我们可以用其进行相应的计算功能来方便我们的学习,代替我们进行一些简单的脑力劳动。

2、具体要求(包括技术要求等):系统的功能要求:1.可以使用计算器进行简单的四则运算:用界面上的按钮输入数字和相应的运算符,即可算出相应的式子的答案,并且确保答案符合一定的精度要求;2.可以使用计算器进行一定的科学运算,比如在输入数字后,计算器可以将相应的数字进行进制转化,实现功能的同时确保一定的精度要求;3.可以进行简单的函数运算,比如求一个数的三角函数等;4.具有一定的错误提示功能,比如输入一个数除以0,我们将输出错误的信息。

学习并掌握以下技术:Javax.swing,AWT,事件处理等熟练使用以下开发工具:Eclipse实现系统上述的功能。

3、进度安排:12月28日~ 12月29日:课程设计选题,查找参考资料12月30日~ 12月31日:完成需求分析1月1日~ 1月5日:完成系统设计,完成程序代码的编写1月6日~ 1月6日:系统测试与完善1月7日~ 1月8日:完成课程设计报告,准备答辩四、主要参考文献[1] 耿祥义. JA V A课程设计[M]. 北京:清华大学出版社,2008年11月.[2] 张广彬, 孟红蕊, 张永宝. Java课程设计案例精编[M]. 北京:清华大学出版社,2007年.[3] 杨树林,胡洁萍. JA V A语言最新实用案例教程[M]. 北京:清华大学出版社,2006年1月. 45-170[4] 刘新Java开发技术大全北京[M].清华大学出版社2009年11月.[5] 黄明, 梁旭, 周绍斌编著. Java课程设计[M] 北京:电子工业出版社, 2006年目录JA V A程序课程设计任务书 (I)目录 (III)第1章引言 (1)1.1背景 (1)1.2课程设计内容 (1)1.3任务分工 (2)第2章实用型计算器的设计 (3)2.1需求分析 (3)2.2开发及运行环境 (3)2.3主要功能要求 (4)2.4系统模块化分析 (4)2.4.1 计算器主界面布局 (4)2.4.2实用型计算器各模块介绍 (7)2.5本章小结 (7)第3章计算器的具体实现 (8)3.1界面设计 (8)3.1.1用户登陆界面图 (8)3.1.2注册用户界面 (10)3.1.3 系统主界面 (12)3.1.4历史记录界面 (14)3.1.5 用户信息界面 (15)3.2程序设计及调试运行 (15)3.3本章小结 (32)第4章结束语 (33)致谢 (33)参考文献 (34)附录源代码 (34)第1章引言1.1 背景Java不依赖平台的特点使它受到广泛的关注,Java已成为网络时代最重要的语言之一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JA V A课程设计之计算器设计报告含源代码|计算机数据库课程设计|精品课程网站设计|课程设计网报告总结心得本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格, clear 表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。

题目:计算器目录1.摘要2.概要设计3.详细设计4.测试分析5.参考文献一、摘要本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格, clear表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。

二、概要设计(1)自定义类说明*********************************************************** 类名: This_number_too_big ** 作用: 自定义的异常类,用来处理计算结果溢出 ** 继承的父类: Exception类 ** 实现的接口: 没有 ***********************************************************class This_number_too_big extends Exception{}//自定义的一个结果溢出异常类*********************************************************** 类名: Jsp2003 ** 作用: 主类。

** 继承的父类: Frame类 ** 实现的接口: ItemListener类,ActionListener类 ***********************************************************class Jsp2003 extends Frame implements ItemListener,ActionListener{public int number=0,length=18;//number是用来记录输入的数字个数,//length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制 public char mark='n';//设置运算符号为没有即为‘n’,它的值是‘+’‘-’‘*’‘/’public double data=0;//设置运算数据为零public char ch;//用来临时存放所按按钮的第一个字符public boolean Refresh=false;//设置lab是否要在输入数据的时候刷新,初始为否主要方法说明:------------------------------------------------------------------------------------------------//用来处理按了运算符后的计算-public void js() throws This_number_too_big //指定由method抛出异常{if (mark=='n') //没有运算符{mark=ch; //,则设置运算符为刚刚输入的字符,data=Double.parseDouble(lab.getText());//则设置运算数据为lab的值Refresh=true;//则设置下一次输入的时候要刷新lab}else //如果采用的是连续运算(即没有使用‘=’号)则运行下面的语句{switch (mark) //根据运算符计算结果,并把结果保存到data{ case '+': data+=Double.parseDouble(lab.getText()); break;case '-': data-=Double.parseDouble(lab.getText()); break;case '*': data*=Double.parseDouble(lab.getText()); break;case '/': data/=Double.parseDouble(lab.getText()); break;}lab.setText(Double.toString(data)); //显示运算结果mark=ch;//设置运算符为刚刚按下的运算符Refresh=true;//则设置下一次输入的时候要刷新labnumber=lab.getText().length();//设置输入的字符个数// System.out.println(lab.getText());//用来调试用的if (data>Double.MAX_VALUE)//如果data超过double类型的最大值则抛出自定义的一个异常类{throw new This_number_too_big(); }}}//end js() method----------------------------------------------------------------------------------------------------public void enter()//处理输入字符{if(Refresh==true)//如果已经设置了运算符则在下一次输入数据的时候要把以前lab的内容清除掉{lab.setText("0"); number=0; Refresh=false;}if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1)//如果lab的内容为0则,lab的内容将被所输入的字符代替,//否则直接在lab的内容后面加上所输入的字符{lab.setText(Character.toString(ch)); number++;}elseif(number{number++;lab.setText(lab.getText()+ch);}}//end enter() method--------------------------------------------------------------------------------------------------------//八进制或十六进制转换成十进制Ipublic String goto_10(String s,long l)//参数s:是要转换的字符串,由于输入的控制,保证了字符串的合法性;//参数l:使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16;{ String str=s; //用来转换的字符串long j=l; //表示进制long lg=0,jing=1;//lg用来记录权乘和,jing用来记录位权char cha;//临时记录要转换的字符for(int i=1;i<=str.length();i++){ cha=str.charAt(str.length()-i);switch(cha){ case '1': lg=lg+1*jing;break;case '2': lg=lg+2*jing;break;case '3': lg=lg+3*jing;break;case '4': lg=lg+4*jing;break;case '5': lg=lg+5*jing;break;case '6': lg=lg+6*jing;break;case '7': lg=lg+7*jing;break;case '8': lg=lg+8*jing;break;case '9': lg=lg+9*jing;break;case 'A': lg=lg+10*jing;break;case 'B': lg=lg+11*jing;break;case 'C': lg=lg+12*jing;break;case 'D': lg=lg+13*jing;break;case 'E': lg=lg+14*jing;break;case 'F': lg=lg+15*jing;break;}jing*=j; //位权升一级,为下次使用做好准备}return Long.toString(lg);}//end String goto_10() method}(2)程序流程图三、详细设计import java.awt.*;import java.awt.event.*;class This_number_too_big extends Exception{}//自定义的一个结果溢出异常类class Jsp2003 extends Frame implements ItemListener,ActionListener {public Jsp2003() {addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {dispose();System.exit(0);}});}static Jsp2003 mainFrame = new Jsp2003();static Label lab=new Label("0");static Panel pnl1=new Panel(new GridLayout(4,3,3,3));static Panel pnl2=new Panel(new GridLayout(4,1,3,3));static Panel pnl3=new Panel(new GridLayout(1,2,3,3));static Panel pnl4=new Panel(new GridLayout(6,1,3,3));static Button bt9=new Button("9");static Button bt8=new Button("8");static Button bt7=new Button("7");static Button bt6=new Button("6");static Button bt5=new Button("5");static Button bt4=new Button("4");static Button bt3=new Button("3");static Button bt2=new Button("2");static Button bt1=new Button("1");static Button bt0=new Button("0");static Button btdot=new Button(".");static Button btequ=new Button("=");static Button btadd=new Button("+");static Button btsub=new Button("-");static Button btmul=new Button("*");static Button btdev=new Button("/");static Button btA=new Button("A");static Button btB=new Button("B");static Button btC=new Button("C");static Button btD=new Button("D");static Button btE=new Button("E");static Button btF=new Button("F");static Checkbox ckb8=new Checkbox("八进制");static Checkbox ckb10=new Checkbox("十进制");static Checkbox ckb16=new Checkbox("十六进制");static Button btc=new Button("clear");static Button btt=new Button("backspace");public int number=0,length=18;//number是用来记录输入的数字个数,length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制public char mark='n'; //设置运算符号为没有即为‘n’,它的值是‘+’‘-’‘*’‘/’ public double data=0; //设置运算数据为零public char ch; //用来临时存放所按按钮的第一个字符public boolean Refresh=false;//设置lab是否要在输入数据的时候刷新,初始为否public static void main(String args[]) {System.out.println("Starting Jsp2003...");lab.setAlignment(Label.RIGHT);lab.setBackground(Color.lightGray);lab.setForeground(Color.BLUE);lab.setFont(new Font("Serief",Font.BOLD,18));lab.setBounds(14,33,216,40);mainFrame.add(lab);CheckboxGroup grp=new CheckboxGroup();ckb8.setCheckboxGroup(grp);ckb10.setCheckboxGroup(grp);ckb16.setCheckboxGroup(grp);ckb8.setBounds(14,75,55,25);ckb10.setBounds(69,75,55,25);ckb16.setBounds(124,75,65,25);ckb8.setState(false);ckb10.setState(true);ckb16.setState(false);mainFrame.add(ckb8);mainFrame.add(ckb10);mainFrame.add(ckb16);pnl1.setBounds(14,140,120,150);pnl2.setBounds(144,140,40,150);pnl3.setBounds(14,100,170,36);pnl4.setBounds(190,100,40,190);pnl1.add(bt7);pnl1.add(bt8);pnl1.add(bt9);pnl1.add(bt4);pnl1.add(bt5);pnl1.add(bt6);pnl1.add(bt1);pnl1.add(bt2);pnl1.add(bt3);pnl1.add(bt0);pnl1.add(btdot);pnl1.add(btequ);pnl2.add(btadd);pnl2.add(btsub);pnl2.add(btmul);pnl2.add(btdev);pnl3.add(btt);pnl3.add(btc);pnl4.add(btA);pnl4.add(btB);pnl4.add(btC);pnl4.add(btD);pnl4.add(btE);pnl4.add(btF);btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);mainFrame.add(pnl1);mainFrame.add(pnl2);mainFrame.add(pnl3);mainFrame.add(pnl4);mainFrame.setResizable(false); mainFrame.setLayout(null); mainFrame.setSize(240,300 ); mainFrame.setTitle("计算器"); mainFrame.setVisible(true);ckb8.addItemListener(mainFrame); ckb10.addItemListener(mainFrame); ckb16.addItemListener(mainFrame); //把事件聆听者向各个组键注册bt1.addActionListener(mainFrame); bt2.addActionListener(mainFrame); bt3.addActionListener(mainFrame); bt4.addActionListener(mainFrame); bt5.addActionListener(mainFrame); bt6.addActionListener(mainFrame); bt7.addActionListener(mainFrame); bt8.addActionListener(mainFrame); bt9.addActionListener(mainFrame); bt0.addActionListener(mainFrame); btadd.addActionListener(mainFrame); btsub.addActionListener(mainFrame); btmul.addActionListener(mainFrame); btdev.addActionListener(mainFrame); btt.addActionListener(mainFrame);btc.addActionListener(mainFrame);btdot.addActionListener(mainFrame);btequ.addActionListener(mainFrame);btA.addActionListener(mainFrame);btB.addActionListener(mainFrame);btC.addActionListener(mainFrame);btD.addActionListener(mainFrame);btE.addActionListener(mainFrame);btF.addActionListener(mainFrame);}// end main() mothed//---------------------------------------------//checkbox 事件的处理public void itemStateChanged(ItemEvent e){ mark='n';Refresh=false;//规定当进制转换时以前输入的运算符失效if (ckb8.getState()==true){ btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);bt9.enable(false);bt8.enable(false);btdot.enable(false);btadd.enable(false);btmul.enable(false);btsub.enable(false);btdev.enable(false);btequ.enable(false);//在八进制的情况下对有些按件的管理if(length==18) { lab.setText(goto10_8(lab.getText())); number=lab.getText().length();}if(length==14) { lab.setText(goto_10(lab.getText(),16L)); lab.setText(goto10_8(lab.getText()));number=lab.getText().length();}//将其他进制转换成八进制length=19;//在八进制下允许输入数字个数最多为19位}if(ckb10.getState()==true){ btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);bt9.enable(true);bt8.enable(true);btdot.enable(true);btadd.enable(true);btmul.enable(true);btsub.enable(true);btdev.enable(true);btequ.enable(true);//在十进制的情况下对有些按件的管理if(length==19) { lab.setText(goto_10(lab.getText(),8L)); number=lab.getText().length();}if(length==14) { lab.setText(goto_10(lab.getText(),16L)); number=lab.getText().length();}//进制转换成十进制length=18;//在十进制下允许输入数字个数最多为18位}if(ckb16.getState()==true){ btA.enable(true);btB.enable(true);btC.enable(true);btD.enable(true);btE.enable(true);btF.enable(true);bt9.enable(true);bt8.enable(true);btdot.enable(false);btadd.enable(false);btmul.enable(false);btsub.enable(false);btdev.enable(false);btequ.enable(false);//在十六进制的情况下对有些按件的管理if(length==18) { lab.setText(goto10_16(lab.getText())); number=lab.getText().length();}if(length==19) { lab.setText(goto_10(lab.getText(),8L));lab.setText(goto10_16(lab.getText()));number=lab.getText().length();}//将其他进制转换成十六进制length=14;//在十六进制下允许输入数字个数最多为14位}//end itemStateChanged(ItemEvent e) method//------------------------------------------------------------//按钮事件的处理public void actionPerformed(ActionEvent m){Button btn=(Button) m.getSource();ch=btn.getLabel().charAt(0);switch (ch){ case 'c': {lab.setText("0"); number=0; mark='n'; Refresh=false;}break;//初始化case '1': enter(); break;case '2': enter(); break;case '3': enter(); break;case '4': enter(); break;case '5': enter(); break;case '6': enter(); break;case '7': enter(); break;case '8': enter(); break;case '9': enter(); break;case '0': {if(Refresh==true) { lab.setText("0"); number=0; Refresh=false; }if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1)break;if(number{number++;lab.setText(lab.getText()+ch);} else break;} break;case 'A': enter(); break;case 'B': enter(); break;case 'C': enter(); break;case 'D': enter(); break;case 'E': enter(); break;case 'F': enter(); break;case '.': {if(Refresh==true) {lab.setText("0"); number=0; Refresh=false;}if(lab.getText().indexOf('.')== -1){number++;lab.setText(lab.getText()+ch);}elsebreak;}break;case 'b': {if(number==0) break;else{if(--number==0) {lab.setText("0"); number=0;}else{if (number!=1) lab.setText(lab.getText().substring(0,number)); elselab.setText(Character.toString(lab.getText().charAt(0)));}}}break;case '+': try{ js();}catch(This_number_too_big e){lab.setText("0"); number=0; mark='n';Refresh=false; System.out.println("The number is too big");} break; //如果出现异常则初始化效果如同clear键case '-': try{ js();}catch(This_number_too_big e){lab.setText("0"); number=0; mark='n';Refresh=false; System.out.println("The number is too big");} break; //如果出现异常则初始化效果如同clear键case '*': try{ js();}catch(This_number_too_big e){lab.setText("0"); number=0; mark='n';Refresh=false; System.out.println("The number is too big");} break; //如果出现异常则初始化效果如同clear键case '/': try{ js();}catch(This_number_too_big e){lab.setText("0"); number=0; mark='n';Refresh=false; System.out.println("The number is too big");} break; //如果出现异常则初始化效果如同clear键case '=': try{ js();}catch(This_number_too_big e){lab.setText("0"); number=0; mark='n';Refresh=false; System.out.println("The number is too big");} break; //如果出现异常则初始化效果如同clear键}}//end actionPerformed(ActionEvent e) method//八进制或十六进制转换成十进制I//-------------------------------------Infinitypublic String goto_10(String s,long l)//参数s:是要转换的字符串,由于输入的控制,保证了字符串的合法性;//参数l:使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16;{String str=s; //用来转换的字符串long j=l; //表示进制long lg=0,jing=1;//lg用来记录权乘和,jing用来记录位权char cha;//临时记录要转换的字符for(int i=1;i<=str.length();i++){cha=str.charAt(str.length()-i);switch(cha){case '1': lg=lg+1*jing;break;case '2': lg=lg+2*jing;break;case '3': lg=lg+3*jing;break;case '4': lg=lg+4*jing;break;case '5': lg=lg+5*jing;break;case '6': lg=lg+6*jing;break;case '7': lg=lg+7*jing;break;case '8': lg=lg+8*jing;break;case '9': lg=lg+9*jing;break;case 'A': lg=lg+10*jing;break;case 'B': lg=lg+11*jing;break;case 'C': lg=lg+12*jing;break;case 'D': lg=lg+13*jing;break;case 'E': lg=lg+14*jing;break;case 'F': lg=lg+15*jing;break;}jing*=j; //位权升一级,为下次使用做好准备}return Long.toString(lg);}//end String goto_10() method//十进制转换成十六进制//-------------------------------------public String goto10_16(String s)//参数s:是要转换的字符串,由于输入的控制,保证了字符串的合法性;{ String str=s; //用来转换的字符串String st=new String();//用来记录16进制值的字符串long ch; //每次取余有的值int k; //将每次取余有的值转换成整形,用来选择转换的16进制字符long lg;//用来转换的10进制数if(str.charAt(0)=='-') //如果有负号则出去负号str=str.substring(1,str.length()-1);if(str.indexOf('E')!= -1)//如果是科学计数值则出去小数点和E后面的数str=str.charAt(0)+str.substring(2,str.indexOf('E'));if (str.indexOf('.')!= -1)//如果有小数点则出去小数点及小数点后面的内容str=str.substring(0,str.indexOf('.'));lg=Long.parseLong(str);//将简化的字符串转化为长整形给lgwhile (lg>=16){ ch=lg%16;k=(int)ch;switch (k){case 10: st="A"+st;break;case 11: st="B"+st;break;case 12: st="C"+st;break;case 13: st="D"+st;break;case 14: st="E"+st;break;case 15: st="F"+st;break;default: st=Long.toString(ch)+st;}lg=lg/16;}k=(int)lg;switch (k){case 10: st="A"+st;break;case 11: st="B"+st;break;case 12: st="C"+st;break;case 13: st="D"+st;break;case 14: st="E"+st;break;case 15: st="F"+st;break;default: st=Long.toString(lg)+st;}return st;}//end goto10_16() method//-----------------------------------------------//十进制转换成八进制?public String goto10_8(String s)//参数s:是要转换的字符串,由于输入的控制,保证了字符串的合法性;{ String str=s;String st=new String();long j=8,ch;long lg;if(str.charAt(0)=='-') //如果有负号则出去负号str=str.substring(1,str.length()-1);if(str.indexOf('E')!= -1)//如果是科学计数值则出去小数点和E后面的数str=str.charAt(0)+str.substring(2,str.indexOf('E'));if (str.indexOf('.')!= -1)//如果有小数点则出去小数点及小数点后面的内容str=str.substring(0,str.indexOf('.'));lg=Long.parseLong(str);while (lg>=j){ ch=lg%j;st=Long.toString(ch)+st;lg=lg/j;}st=Long.toString(lg)+st;return st;}//end goto10_8() method//--------------------------------//输入字符public void enter(){if(Refresh==true)//如果已经设置了运算符则在下一次输入数据的时候要把以前lab的内容清除掉{lab.setText("0"); number=0; Refresh=false;}if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1)//如果lab的内容为0则,lab的内容将被所输入的字符代替,否则直接在lab的内容后面加上所输入的字符{lab.setText(Character.toString(ch)); number++;}elseif(number{number++;lab.setText(lab.getText()+ch);}}//end enter() method//-------------------------------------//用来处理按了运算符后的计算-public void js() throws This_number_too_big //指定由method抛出异常{if (mark=='n') //没有运算符{mark=ch; //,则设置运算符为刚刚输入的字符,data=Double.parseDouble(lab.getText());//则设置运算数据为lab的值Refresh=true;//则设置下一次输入的时候要刷新lab}else //如果采用的是连续运算(即没有使用‘=’号)则运行下面的语句{switch (mark) //根据运算符计算结果,并把结果保存到data{ case '+': data+=Double.parseDouble(lab.getText()); break;case '-': data-=Double.parseDouble(lab.getText()); break;case '*': data*=Double.parseDouble(lab.getText()); break;case '/': data/=Double.parseDouble(lab.getText()); break;}lab.setText(Double.toString(data)); //显示运算结果mark=ch;//设置运算符为刚刚按下的运算符Refresh=true;//则设置下一次输入的时候要刷新labnumber=lab.getText().length();//设置输入的字符个数// System.out.println(lab.getText());//用来调试用的if (data>Double.MAX_VALUE)//如果data超过double类型的最大值则抛出自定义的一个异常类{throw new This_number_too_big(); }}}//end js() method//---------------------------//public void answer() throws This_number_too_big //指定由method抛出异常{if (mark=='n'){}else{switch (mark){case '+': data+=Double.parseDouble(lab.getText()); break;case '-': data-=Double.parseDouble(lab.getText()); break;case '*': data*=Double.parseDouble(lab.getText()); break;case '/': data/=Double.parseDouble(lab.getText()); break;}lab.setText(Double.toString(data));mark='n';}if (data>Double.MAX_VALUE) //如果data超过double类型的最大值则抛出自定义的一个异常类{throw new This_number_too_big();}Refresh=false;number=lab.getText().length();}//end answer() method//---------------------------}//end class Jsp20034.测试分析(1)程序运行情况:程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的E ,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if 语句,如果结果大于某一个值就抛出一个This_number_too_big 类型的类,再使用try-catch,捕捉输出结果的方法抛出的异常对象。

相关文档
最新文档