java设计之简单的JAVA计算器

做这个东西主要是为了练习一下以前学习过的java Swing,所以那些复杂的算法就没有加载到里面去........

先展示一下效果....,额,当然不是这个样子....

  ---》

代码:

  1 package dialog_color;
  2
  3 import java.awt.BorderLayout;
  4 import java.awt.Color;
  5 import java.awt.Container;
  6 import java.awt.FlowLayout;
  7 import java.awt.Font;
  8 import java.awt.GridLayout;
  9 import java.awt.Insets;
 10 import java.awt.event.ActionEvent;
 11 import java.awt.event.ActionListener;
 12 import java.math.BigInteger;
 13 import java.util.ArrayList;
 14 import java.util.List;
 15 import java.util.Stack;
 16 import java.util.regex.Matcher;
 17 import java.util.regex.Pattern;
 18
 19 import javax.swing.BorderFactory;
 20 import javax.swing.ImageIcon;
 21 import javax.swing.JButton;
 22 import javax.swing.JFrame;
 23 import javax.swing.JLabel;
 24 import javax.swing.JPanel;
 25 import javax.swing.JTextField;
 26 import javax.swing.UIManager;
 27  /*简易计算器*/
 28 public class Simple_jisuanqi {
 29   public static  void main(String args []) {
 30
 31        Caculate mycacu = new Caculate();
 32      //  Container con =mycacu.getContentPane();
 33        mycacu.setTitle("GXjun计算器");
 34
 35   }
 36 }
 37 class Caculate extends JFrame implements ActionListener
 38 {
 39      Container  mycon;    //设置重量级容器
 40      JPanel  jpanel_1,jpanel_2,jpanel_3;    //设置轻量级布局
 41      myJButton button []= new myJButton [20];
 42      JTextField mytext;
 43      JLabel label;
 44     GridLayout grid = new GridLayout(4,4);
 45     Caculate(){          //构造函数
 46         mycon = getContentPane();
 47         jpanel_1 = new JPanel();  /*默认的格式为FlowLayout*/
 48         jpanel_2 =new JPanel();
 49         jpanel_3 = new JPanel();
 50         jpanel_2.setLayout(grid);
 51         mytext = new JTextField(14);
 52         mytext.setEditable(false);   //设置成为不能
 53         mytext.setFont(new Font("Arial",Font.BOLD,22));
 54        /* for(int i=0;i<20;i++)
 55          button[i]=new myJButton(null);*/
 56         button[0] = new myJButton(" 后退  ",22);
 57         button[0].addActionListener(this);
 58         button[1] = new myJButton("  归零  ",22);
 59         button[1].addActionListener(this);
 60         jpanel_1.add(button[0]);
 61         jpanel_1.add(mytext);
 62         jpanel_1.add(button[1]);
 63         label = new JLabel(new ImageIcon("C:\\Users\\Administrator.USERSWO-MKA59UH\\Desktop\\java\\bin\\dialog_color\\a.jpg"));
 64        // label = new JLabel(new ImageIcon("D:\\2\\2.gif"));
 65         jpanel_3.add(label);
 66         for(int i=2;i<12;i++)
 67             button[i]=new myJButton(" "+i+" ",26);
 68         char str[][]={{‘7‘,‘8‘,‘9‘,‘/‘},{‘4‘,‘5‘,‘6‘,‘*‘},{‘1‘,‘2‘,‘3‘,‘-‘},{‘0‘,‘.‘,‘+‘,‘=‘}};
 69         for(int i=0;i<4;i++)
 70           for(int j=0;j<4;j++){
 71               button[2+i*4+j] =new myJButton("  "+str[i][j]+"  ",26);
 72               button[2+i*4+j].addActionListener(this);
 73               jpanel_2.add(button[2+i*4+j]);
 74             }
 75        mycon.add(jpanel_1,BorderLayout.CENTER);
 76        mycon.add(jpanel_3,BorderLayout.NORTH);
 77        mycon.add(jpanel_2,BorderLayout.SOUTH);
 78          init();
 79    }
 80    void init() /*相关组件的一系列的初始化*/
 81    {
 82      setBounds(100, 100, 477, 280);
 83      setVisible(true);
 84      setResizable(false);
 85      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 86    }
 87    String str ="";
 88 @Override
 89 public void actionPerformed(ActionEvent e) {
 90     // TODO Auto-generated method stub
 91     //System.out.println(e.getActionCommand());
 92      if(e.getSource()==button[0]||e.getSource()==button[1])
 93       {
 94             if(e.getSource()==button[0]){
 95               System.out.println(str);
 96             if(!str.isEmpty()){
 97               str=str.substring(0, str.length()-1) ; //后退一格
 98              }
 99             }
100             else str="";
101       }
102      else
103      {
104       if(e.getSource()==button[17]){
105         //等于号的时候,又该如何处理?  正则表达式
106         //System.out.println(e.getActionCommand());
107          /*System.out.println(sove_calc(str));*/
108           Double judge=sove_calc(str.trim());
109           if(judge==Double.MAX_VALUE)
110           {
111               mytext.setText("error!");
112               validate();
113               return;
114           }
115           else str=judge.toString();
116       }
117       else{
118           str+=e.getActionCommand().toString().trim();
119       }
120      }
121      if(str.isEmpty())  mytext.setText("0");
122      else mytext.setText(str);
123         validate();
124 }
125 private Double sove_calc(String str)
126 {
127     /*怎么提起出字符串里面的运算符号呢*/
128     Pattern mypa = Pattern.compile("\\+|\\-|\\*|\\/");
129       Matcher mtma = mypa.matcher(str);
130       List<String> listhoge = new ArrayList();
131       while(mtma.find()) listhoge.add(mtma.group());
132        String [] hoge = listhoge.toArray(new String [0]);  //获取运算符号
133    /*突然遇到一个问题怎么从字符串提起浮点型数据呢?*/
134      Pattern mypart = Pattern.compile("\\.\\d|\\d+(\\.\\d+)?");
135      Matcher mtmatcher =mypart.matcher(str);
136      List<String> listval = new ArrayList();
137      while(mtmatcher.find())
138        listval.add(mtmatcher.group());
139      String [] val=listval.toArray(new String[0]);
140      double sum=Double.parseDouble(val[0]);
141     for( int i=0;i<hoge.length;i++)
142     {
143          System.out.println(hoge[i].charAt(0));
144        switch(hoge[i].charAt(0))
145        {
146          case ‘+‘:  sum += Double.parseDouble(val[i+1]); break;
147          case ‘-‘:  sum -= Double.parseDouble(val[i+1]); break;
148          case ‘*‘:  sum *= Double.parseDouble(val[i+1]); break;
149          case ‘/‘:
150          {
151             Double tem=Double.parseDouble(val[i+1]);
152             if(tem.equals(0))  return Double.MAX_VALUE;
153             sum/=tem;
154             break;
155          }
156          default :  System.out.println("error!"); break;
157        }
158    }
159   return sum;
160 }
161 }
162 class  myJButton extends JButton
163 {
164   public myJButton(String name,int size)
165   {
166         // TODO Auto-generated constructor stub
167       super(name);
168       setFont(new Font("仿宋",Font.BOLD,size));
169     setMargin(new Insets(2,2,2,2));
170     setBorder(BorderFactory.createRaisedBevelBorder());
171     setBackground(Color.LIGHT_GRAY);
172   }
173 }

java设计之简单的JAVA计算器,布布扣,bubuko.com

时间: 2024-12-28 10:47:25

java设计之简单的JAVA计算器的相关文章

2015.11.27初识java一集简单的java小程序

今天是来到汉企第二天,昨天主要学习了JAVA配置环境变量方法:1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME变量值:D:\Java\jdk1.7.0_60_x64(变量值必须为全英文路径,不能有中文) 变量名:CLASSPATH变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(完全复制即可)3. 选择“系统变量”中变量名为“Path”的环境变量,双击该

Java提高篇—— 简单介绍Java 的内存泄漏

阅读目录 什么是内存泄漏? 为什么会发生内存泄漏? 如何预防内存泄漏? java最明显的一个优势就是它的内存管理机制.你只需简单创建对象,java的垃圾回收机制负责分配和释放内存.然而情况并不像想像的那么简单,因为在Java应用中经常发生内存泄漏. 本教程演示了什么是内存泄漏,为什么会发生内存泄漏以及如何预防内存泄漏. 回到顶部 什么是内存泄漏? 定义:如果对象在应用中不再被使用,但由于它们在其他地方被引用,垃圾回收却不能移除它们(这样就造成了很多内存不能释放,从而导致内存溢出的现象.译注).

哪里可以找到基于JAVA设计帮做的超市管理系统

一,关于我们我们是专业从事于定做计算机相关毕业设计,拥有专业的写手团队和严格的保密制度.我们的工程师们在软件工程开发与设计的各个领域积累了丰富的经验,保证服务水平.我们致力于为客户提供各专业高质量的毕业设计定做服务,为即将毕业的同学提供毕业设计指导.毕设代做.毕设定制等一站式服务.强大的专业能力,高效的服务水平,多年以来一直深得客户好评,毕业只有一次,我们将尽心尽力为你完成毕设. 联系我们:.扣.扣.号(幺零三贰三七幺贰幺) 与我们取得联系,向我们提出您的写作要求:我们咨询师会根据您的服务需求和

如何使用JAVA设计在线设计管理系统的代码详解

一,关于我们我是专业从事于定做计算机相关毕业设计,拥有专业的写手团队和严格的保密制度.我们的工程师们在软件工程开发与设计的各个领域积累了丰富的经验,保证服务水平.近两年,每个毕业季都帮助至少50位以上的计算机专业同学通过了毕业答辩,也是一件很开心的事情.每每看到他们来找我做毕业设计就像抓住了救命稻草一样,那种充满期待,和无助的感觉,也让我觉得把毕业设计给他们做好,服务好每一位同学是我义不容辞的责任,同学通过后.那种欢喜,我也是感同身受. 联系我们:.扣.扣.号(幺零三贰三七幺贰幺) 对于大多数的

Java初学者必知:Java语言的11大特点

Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异.多线程的静态语言.那么java语言的特点是什么呢? 1.Java语言是简单的 Java 语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java.另一方面,Java丢弃了C++中很少使用的.很难理解的.令人迷惑 的那些特性,如操作符重载.多继承.自动的强制类型转换.特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧. 2.Java语言是一个面

JAVA编写的简单计算器

package com.hellojava.practice.test; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; impo

Java对象简单实用(计算器案例)

Java对象简单实用(计算器案例) 对 Java中的对象与属性,方法的使用,简单写了个案例 1 import java.util.Scanner; 2 class Calculste 3 { 4 int a; //定义两个整数 5 int b; 6 String option; //定义接收操作符的字符串 7 public void count(){ 8 9 //对操作符进行判断 10 switch(option){ 11 case "+": 12 System.out.println

使用Java实现的简单的计算器

package calculate; /** * @author Wayne; * @time 2014年7月14日; * @project java计算器2.0; */ import java.awt.*; import java.awt.event.*; import java.text.DecimalFormat; import javax.swing.*; import javax.swing.JOptionPane; import javax.script.*; public clas

java分页组件简单设计(贼简单)

代码很简单,关键是思想. 每个业务模块基本都会涉及到分页的应用,不管是普通的分页浏览还是瀑布流形式的浏览.分页可以减轻服务器的压力,可以节俭页面布局.在我们的分页简单组件设计中,主要是需要返回给客户端四个数据:列表对象.当前页码.每页记录最大条数.记录总数. 列表对象:顾名思义,就是展示给用户看的当前页面记录: 当前页码:主要是需要js来高亮: 每页记录最大条数:一般是服务器设定 记录总数:js用来计算总页数使用 设计思想: 1.由于分页是一种可以公共使用的功能,所以可以开发成一个组件,这样可以