下载可编辑
⑵、算法思路:
这是一个简单的计算器,里面所涉及到的功能就是加、减、乘、除、等基本功能。在输入数据之后Character.isDigit(Command.charAt(0))判断输入的数据是否符合要求。不符合要求给出提示,符合要求以后将判断点击的运算符,执行相应的操作。
对于单运算操作要进一步判断是否符合要求,如果是就进入下步计算,如果不是就弹出相应的提示: “负数不能开根号\; \除数不能为零\;用try….catch捕获异常,如果有异常则中止活动。在进行开方(sqrt)运算时,如果输入数为负数,则弹出\负数不能开根号\,中止运算。在进行自然对数运算时(log)如果输入数为负数,则弹出\负数不能进行自然对数运算”。在进行三角函数运算时(cos、tan)不必考虑输入的数字是否符合规,对于任意输入的数函数本身有一个判断的过程,都能把输入的数转化为合适的围,进而得到正确的结果。对于加减乘除等双运算操作,每个功能都由每一个模块来实现,当按下加按钮时,进行相应的加法操作,这一块对相应的操作数没有要求;当点击减号时,则进行减法操作,由jTextField.getText()得到数字按钮的值显示在相应的文本框中;乘法操作在点击一个操作数然后点击乘号再点击另一个时得出相应的结果显示在文本框中;在作除法运算时,当被除数点击为零时,调用catch进行异常处理,弹出“Infinity”。 ⑶、数据分析
在事件处理,触发按钮事件时,先判断是或是数字是或是“-/+”是或是“.”,是的话就将负号“-” 、数字、小数点“.”分别写入文本框并存放在sum中,然后判断是或是“退格”、“求倒”等,是的话进行相应的处理,都不是的话则跳到doOperation()执行运算同时将运算符存放在preOperater中。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。
.专业.整理.
下载可编辑
⑷、程序代码 import java.util.*; import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class Calculater extends JFrame implements ActionListener{ JTextField x; //文本框
String preOperater=\上一次的运算符 double sum=0; //运算结果 public Calculater(String title){ super(title);
Container c=getContentPane(); //容器
c.setLayout(new BorderLayout()); //容器采用边缘布局 x=new JTextField(50); c.add(\
String buttoned[]={\退格\求倒\log\JPanel p=new JPanel(); //面板
p.setLayout(new GridLayout(3,9,10,10)); //面板采用行列数3,6的网格布局
for(int k=0;k JButton b=new JButton(buttoned[k]); p.add(b); b.addActionListener(this); } c.add(\ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } //响应用户事件,根据点击按钮实现相关操作 .专业.整理. 下载可编辑 public void actionPerformed(ActionEvent e){ String Command=e.getActionCommand(); try{ if(Character.isDigit(Command.charAt(0))){ //如果按钮事件为 } else if(Command.equals(\如果按钮事件为\键 } else if(Command.equals(\如果按钮事件为\键 } else if (Command.equals(\退格\如果按钮事件为\退格\键 } else if(Command.equals(\如果按钮事件为\键 } else if(Command.equals(\如果按钮事件为\键 } else if(Command.equals(\如果按钮事件为\键 } else if(Command.equals(\如果按钮事件为\键 } else if(Command.equals(\如果按钮事件为\键 } tan(); cos(); log(); sqrt(); dengyu(); backspace(); fuhao(); xiaoshu(); x.setText(x.getText()+Command); //添加数字 数字键 .专业.整理. 下载可编辑 } else if(Command.equals(\如果按钮事件为\键 } else if (Command.equals(\求倒\如果按钮事件为\求倒\ } else if(Command.equals(\如果按钮事件为\键 } else { doOperation(); //记录运算符和输入的数字 } x.setText(\preOperater=Command; clear(); qiudao(); exp(); 键 }catch(Exception ex) {sum=0; x.setText(\ void xiaoshu(){ //添加小数点 } void fuhao(){ //添加负号 } void backspace(){ //退格 } .专业.整理. String s=x.getText(); if(s.indexOf(\ x.setText(s+\ String s=x.getText(); if(s.indexOf(\ x.setText(\ String s=x.getText(); if(s.length()>0) x.setText(s.substring(0,s.length()-1)); //删除最后一个字符 下载可编辑 void dengyu(){ //等号,显示计算结果 } void sqrt(){ //求该数的平方根 } void log(){ //求该数的自然对数 double m=Double.parseDouble(x.getText()); } void cos(){ //求该数的余弦 } void tan(){ //求该数的正切 } void exp(){ //求e的幂 } .专业.整理. doOperation(); x.setText(\preOperater=\ double m=Double.parseDouble(x.getText()); if (m<0) x.setText(\负数不能开根号\ else x.setText(\ if (m<0) x.setText(\负数不能进行自然对数运算\else x.setText(\ double m=Double.parseDouble(x.getText()); x.setText(\ double m=Double.parseDouble(x.getText()); x.setText(\ double m=Double.parseDouble(x.getText()); x.setText(\