JAVA程序设计课程作业 - 标准计算器的实现报告(4)

2019-04-08 18:24

}

//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处 else

textAnswer.setText('-' + s); } }

//计算器有关内存操作 //'MC'的操作,将内存清0

if (temp == buttonMC && clickable == true) {

memoryd = memoryi = 0; textMemory.setText(\ }

//'MS'的操作,将当前文本框内容保存入内存,显示'M' if (temp == buttonMS && clickable == true) {

boolean isDot = false;

textMemory.setText(\小文本框显示M

for (int i = 0; i < textAnswer.getText().length(); i++) if ('.' == textAnswer.getText().charAt(i)) {

isDot = true; break; }

//如果是double,则存入memoryd(double存储器) if (isDot == true) {

memoryd = Double.parseDouble(textAnswer.getText()); memoryi = 0; //保证存储器中存放最新的值 }

//如果是int,则存入memoryi(int存储器) else {

memoryi = Integer.parseInt(textAnswer.getText()); memoryd = 0; //保证存储器中存放最新的值 } }

//'MR'的操作,将存储器中的信息输出 if (temp == buttonMR && clickable == true) {

if (memoryd != 0)

textAnswer.setText(Double.toString(memoryd)); if (memoryi != 0)

textAnswer.setText(Integer.toString(memoryi));

}

//'M+'的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器 if (temp == buttonMAdd && clickable == true) {

boolean isDot = false;

for (int i = 0; i < textAnswer.getText().length(); i++) if ('.' == textAnswer.getText().charAt(i)) {

isDot = true; break; }

if (memoryi != 0)

{ //存储中是一个int型数

if (isDot == false) //被加数是一个int型数

memoryi += Integer.parseInt(textAnswer.getText()); else

{//被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零

memoryd = memoryi + Double.parseDouble(textAnswer.getText()); memoryi = 0; } } else

memoryd += Double.parseDouble(textAnswer.getText()); }

//按下n!按钮,计算当前阶乘

if (temp == buttonN && clickable == true) { boolean isDot=false; int i,j,k; for (i=0;i

} } if(isDot==true||textAnswer.getText().charAt(0)=='-'){ textAnswer.setText(\负数或小数不能求阶乘!\ clickable=false; } else {

vard = Double.parseDouble(textAnswer.getText()); answerd=1;

for(int counteri=1;counteri<=(int)vard;counteri++) {

answerd *= counteri; }

textAnswer.setText(Integer.toString((int)answerd)); prekey=5; }

} //按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除 if (temp == buttonBk && clickable == true) {

String s = textAnswer.getText(); textAnswer.setText(\

for (int i = 0; i < s.length() - 1; i++)//只要前面s.length() - 1位即最后一位删除 {

char a = s.charAt(i);

textAnswer.setText(textAnswer.getText() + a); } }

//按下'CE'按钮,将当前文本框内数据清除 if (temp == buttonCe) {

textAnswer.setText(\ clickable = true; }

//按下'C'按钮,文本框内数据清除,同时var,answer清0 if (temp == buttonC) {

vard = answerd = 0; textAnswer.setText(\ clickable = true; }

//按下'复制'菜单栏 if (temp == copyItem) {

copy = textAnswer.getText(); }

//按下'粘贴'菜单栏 if (temp == pasteItem) {

textAnswer.setText(copy); }

if (temp == sItem) {

JOptionPane.showMessageDialog(panel, \非常抱歉,当前只能是标准型计算器\ }

//按下'帮助主题'菜单栏 if (temp == topHelp) {

JOptionPane.showMessageDialog(panel, scrollHelp); }

//按下'数字分组'菜单栏 if (temp == numberGroup) {

if (numberGroup.getText().compareTo(\数字分组(I)\ numberGroup.setText(\√数字分组(I)\ else

numberGroup.setText(\数字分组(I)\ }

//按下'关于'菜单栏 if (temp == aboutCal) {

JOptionPane.showMessageDialog(panel, \计算器-开发人员 王韩波 郭朝晖 陈自寅 \ }

}//end of try

//输入中如果有操作非法,捕获异常 catch (Exception e) {

textAnswer.setText(\操作非法\ clickable = false; //键盘禁用 } }

//主函数

public static void main(String args[]) {

Calculator cl = new Calculator(); } }

四 程序运行、调试结果:

1、当运行该程序时,就会弹出下面的对话框:

2、当在对话框中输入数字12时,对话框会如下:

3、可以任意输入运算符,然后输入另一个数字即可。该程序执行该算式:12+34=?

4、输入以上结果后,计算器会显示如下结果:

五 实验中的问题

此次实验虽然仅仅是实现了一个简单的标准计算器,但其中遇到不少问题。尽管道路有点小曲折,可仔细回想一下收获颇丰。以下简要的列出其中几个有代表性的问题:

1) 关于“+,-,*,/”的优先级,参考了Windows XP中的计算机,考虑到其为标准计算

机,所以一律从左往右算;

2)关于String 和 double类型的转换,开始时未意识到这个问题,可是显示时一定要用toString方法转为String型,如 textAnswer.setText(Double.toString(dtemp)),而计算时一定要变为double型,如answerd *= Double.parseDouble(textAnswer.getText());

3) textAnswer.getText().charAt(0) == '0'不能直接用textAnswer.getText()== '0' 一定要转

为char;

六 实验收获:

1) 2) 3) 4)

深入了解java语言,熟悉Swing组件的基本应用; 掌握软件开发的基本流程,为软件课设打好基础; 摒弃眼高手低的坏习惯,看似不复杂的东西,具体实践时总有各种各样的意料之外; 通过讨论分工等协作手段,培养了团队合作能力。

七 实验分工

? 王XX:数字输入、+、-、*、/、=、%、1/x、sqrt、+/-运算实现、程序说明文档

? 郭XX:界面实现、程序说明文档

? 陈XX:菜单栏、MR、MC、M+、MS、CE、C、backspace、n!、运算实现、介绍PPT


JAVA程序设计课程作业 - 标准计算器的实现报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:石材幕墙施工方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: