Calculator.rar

  • xianxueyun
    了解作者
  • Java
    开发工具
  • 8KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2013-11-05 09:37
    上传日期
基于JAVA做得一个小型计算器,具有简单的加减乘除功能,能完成简单的运算
Calculator.rar
  • java计算器
  • Calculator3.class
    8.3KB
  • MyCalculator1.class
    307B
  • MyCalculator1.java
    17.1KB
内容介绍
import java.awt.event.*; import java.awt.*; import java.util.regex.Pattern; import java.util.regex.Matcher; import javax.swing.*; public class MyCalculator1 extends JFrame { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new Calculator3(); } } class Calculator3 extends JFrame implements ActionListener{ //p1上放置两个JTextField,一个用于输出提示信息,另一个用于输入数据 //p2上用来放置按钮 JPanel p1,p2,p3; JTextField txt1,txt2; JLabel biaoqian; JButton[] btn = new JButton[20]; String[] btnStr = {"1" , "2" , "3" , "CLR" , "Backspace" , "4" , "5" , "6" , "+" , "-" , "7" , "8", "9" , "*" , "/" , "0" , "." , "+/-" ,"1/X" , "="}; //num1记录参加运算的第一个数,num2记录参加运算的第二个数 //resualt记录计算结果 //tempnum用来记录num2的值这是专门为解决重复按下等号的计算问题 //tempnum1用来临时保存数据 double num1 = 0,num2 = 0,resualt = 0 ,tempnum = 0 , tempnum1 = 0; // n用来标记最终进行的是哪种运算 // n=0 不做运算 , n=1 加法 ,n=2 减法 ,n=3 乘法 ,n=4 除法 ,n=5 取倒数 //equalNum表示等号按下的次数,equalNum=0表示尚未按下等号 int n=0,equalNum = 0; //point标记小数点是否重复输入,true表示当前可以输入小数点 // txt1Can表示文本框中是否有数字已经输入,false表示尚未输入任何数字 //txt1Houji为false时说明txt1中是一个不完全小数,比如只输入了12.此时将其解释为12.0 //num2Have为false时说明没有输入参加运算的第二个数字 //negeMark为false时表示txt1中的数据是正数此时可以输入负号 boolean point=true,txt1Can = false ,txt1Houji = true , num2Have = false , negeMark = false ; Calculator3(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(30,30,306,330); setLayout(null); p1 = new JPanel(); //该面板上添加文本域 p2 = new JPanel(); // 该面板上添加按钮 biaoqian = new JLabel("计算器"); //添加了一个标签 biaoqian.setBounds(0,0,this.getWidth(),this.getHeight()/10); add(biaoqian); txt1 = new JTextField(); //产生文本域用于输出提示信息 txt2 = new JTextField(); //产生文本域用于输入数据 //设置p1和两个文本框的大小 p1.setLayout(null); p1.setBounds(0,30,300,30); txt1.setBounds(0,0,300,15); txt2.setBounds(0,15,300,15); txt1.setHorizontalAlignment(JTextField.RIGHT); //设置文本框中文字的对齐方式为右对齐 txt2.setHorizontalAlignment(JTextField.RIGHT); p1.add(txt1); p1.add(txt2); //设置面板p2的大小 p2.setBounds(0,60,300,240); p2.setLayout(new GridLayout(4,5)); //向p2中添加按钮 for(int i = 0 ; i<20 ; i++){ try{ btn[i] = new JButton(btnStr[i]); //add()方法可能会产生异常 btn[i].addActionListener(this); p2.add(btn[i]); }catch(NullPointerException e){ System.out.println("添加按钮组件时出错"); System.exit(-1); } catch(IllegalArgumentException e){ System.out.println("添加按钮时出错"); System.exit(-1); } } add(p1); add(p2); setResizable(false); setVisible(true); } public void actionPerformed(ActionEvent e){ JButton jbtn = (JButton)e.getSource(); if(jbtn == btn[0]){ //按下1键 txt1Can = true ; //表示txt1中已经输入了数据 if(equalNum > 0){ //在已经按下了一次等号的基础上若再按下数字键则默认重新开始新一轮的计算 //num1 = num2 = resualt = tempnum =0; //重新开始后所有都恢复初值 //equalNum = 0; InitCal(); //初始化 txt1.setText(""); txt1.setText("" + 1); txt2.setText(""); } else{ txt1.setText(txt1.getText() + 1); } } if(jbtn == btn[1]){ //按下2键 txt1Can = true ; //表示txt1中已经输入了数据 if(equalNum > 0){ //在已经按下了一次等号的基础上若再按下数字键则默认重新开始新一轮的计算 //equalNum = 0; //num1 = num2 = resualt = tempnum =0; //重新开始后所有都恢复初值 InitCal(); //初始化 txt1.setText(""); txt1.setText("" + 2); txt2.setText(""); } else{ txt1.setText(txt1.getText() + 2); } } if(jbtn == btn[2]){ //按下3键 txt1Can = true ; //表示txt1中已经输入了数据 if(equalNum > 0){ //在已经按下了一次等号的基础上若再按下数字键则默认重新开始新一轮的计算 //equalNum = 0; //num1 = num2 = resualt = tempnum =0; //重新开始后所有都恢复初值 InitCal(); //初始化 txt1.setText(""); txt1.setText("" + 3); txt2.setText(""); } else{ txt1.setText(txt1.getText() + 3); } } if(jbtn == btn[3]){ //清零键 n=0; //清零后运算符标记置为0,表示尚未输入任何运算符 //equalNum = 0; //清零后等号按下的次数也就恢复为0 // txt1Can = false; //清零后说明txt1中已经为空 //num1 = num2 = resualt = tempnum =0; //重新开始后所有都恢复初值 InitCal(); //初始化 txt1.setText(""); txt2.setText(""); } if(jbtn == btn[4]){ //退格键,每次清除一个数据 String str = txt1.getText(); if(str.length()==0){} //这里用一个空语句表示当txt1中没有任何输入时那么按下退格键将无任何作用 else str = str.substring(0,str.length()-1); txt1.setText(str); } if(jbtn == btn[5]){ //按下4键 txt1Can = true ; //表示txt1中已经输入了数据 if(equalNum > 0){ //在已经按下了一次等号的基础上若再按下数字键则默认重新开始新一轮的计算 //equalNum = 0; //num1 = num2 = resualt = tempnum =0; //重新开始后所有都恢复初值 InitCal(); //初始化 txt1.setText(""); txt1.setText("" + 4); txt2.setText(""); } else{ txt1.setText(txt1.getText() + 4); } } if(jbtn == btn[6]){ //按下5键 txt1Can = true ; //表示txt1中已经输入了数据 if(equalNum > 0){ //在已经按下了一次等号的基础上若再按下数字键则默认重新开始新一轮的计算 //equalNum = 0; //num1 = num2 = resualt = tempnum =0; //重新开始后所有都恢复初值 InitCal(); //初始化 txt1.setText(""); txt1.setText("" + 5); txt2.setText(""); } else{ txt1.setText(txt1.getText() + 5); } } if(jbtn == btn[7]){ //按下六键 txt1Can = true ; //表示txt1中已经输入了数据 if(equalNum > 0){ //在已经按下了一次等号的基础上若再按下数字键则默认重新开始新一轮的计算 //equalNum = 0; //num1 = num2 = resualt = tempnum =0; //重新开始后所有都恢复初值 InitCal(); //初始化 txt1.setText(""); txt1.setText("" + 6); txt2.setText(""); } else{ txt1.setText(txt1.getText() + 6); } } if(jbtn == btn[8]){ //加法运算 if(txt1Can){ //当txt1中已经有数据时 if(txt1Houji){ //已输入的数据格式正确,不需再转换 num1 = Double.parseDouble(txt1.getText()); }else{ //输入的是不完全小数则需要对输入数据的格式进行纠正 num1 = Double.parseDouble(txt1.getText() + 0); } n=1; equalNum = 0; //当按下运算符号时说明已经重新开始了新一轮的连续计算,这时 等号计数器置为0 txt2.setText("" + num1 + "+"); txt1.setText(""); } else{ //当尚未输入参加运算的数据而按下加号时就弹出“非法输入”的提示框 JOptionPane.showMessageDialog(null,"非法输入"); } } if(jbtn == btn[9]){ //减法运算 if(txt1Can){ //当txt1中已经有数据时 if(txt1Houji){ //已输入的数据格式正确,不需再转换 num1 = Double.parseDouble(txt1.getText()); }else{ //输入的是不完全小数则需要对输入数据的格式进行纠正 num1 = Double.parseDouble(txt1.getText() + 0); } n=2; equalNum = 0; //当按下运算符号时说明已经重新开始了新一轮的连续计算,这时 等号计数器置为0 txt2.setText("" + num1 + "-"); txt1.setText(""); } else{ //当尚未输入参加运算的数据而按下加号时就弹出“非法输入”的提示框 JOptionPane.showMessageDialog(null,"非法输入"); } } if(jbtn == btn[10]){ //按下7键 txt1Can = true ; //表示txt1中已经输入了数据 if(equalNum > 0){ //在已经按下了一次等号的基础上若再按下数字键则默认重新开始新一轮的计算 // equalNum = 0; //num1 = num2 = resualt = tempnum =0; //重新开始后所有都恢复初值 InitCal(); //初始化 txt1.setText(
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...