`

以前用java写的计算器程序

阅读更多
以前用java写的计算器程序:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Calculator extends JFrame
{
 private Container container;
 private GridBagLayout layout;
 private GridBagConstraints constraints; 
 private JTextField displayField;//计算结果显示区
 private String lastCommand;//保存+,-,*,/,=命令
 private double result;//保存计算结果
 private boolean start;//判断是否为数字的开始
 
  public Calculator()
  {
  super("Calculator");
  container=getContentPane();
  layout=new GridBagLayout();
  container.setLayout(layout);
  constraints=new GridBagConstraints();
  
  start=true;
  result=0;
  lastCommand = "=";
  
  displayField=new JTextField(20);
  displayField.setHorizontalAlignment(JTextField.RIGHT);
  constraints.gridx=0;
  constraints.gridy=0;
  constraints.gridwidth=4;
  constraints.gridheight=1;
  constraints.fill=GridBagConstraints.BOTH;
  constraints.weightx=100;
  constraints.weighty=100;
  layout.setConstraints(displayField,constraints);
  container.add(displayField);
  
  ActionListener insert = new InsertAction();
    ActionListener command = new CommandAction();
    
  addButton("Backspace",0,1,2,1,insert);
  addButton("CE",2,1,1,1,insert);
  addButton("C",3,1,1,1,insert);
  
  addButton("7",0,2,1,1,insert);
  addButton("8",1,2,1,1,insert);
  addButton("9",2,2,1,1,insert);
  addButton("/",3,2,1,1,command);
  
  addButton("4",0,3,1,1,insert);
  addButton("5",1,3,1,1,insert);
  addButton("6",2,3,1,1,insert);
  addButton("*",3,3,1,1,command);
  
  addButton("1",0,4,1,1,insert);
  addButton("2",1,4,1,1,insert);
  addButton("3",2,4,1,1,insert);
  addButton("-",3,4,1,1,command);
  
  addButton("0",0,5,1,1,insert);
  addButton("+/-",1,5,1,1,insert);//只显示"-"号,"+"没有实用价值
  addButton(".",2,5,1,1,insert);
  addButton("+",3,5,1,1,command);
  
  addButton("=",0,6,4,1,command);
  
  setSize(300,300);
  setVisible(true);
  }
  private void addButton(String label,int row,int column,int with,int height,ActionListener listener)
  {
   JButton button=new JButton(label);
 
   constraints.gridx=row;
   constraints.gridy=column;
   
   constraints.gridwidth=with;
   constraints.gridheight=height;
   
    constraints.fill=GridBagConstraints.BOTH;
   
   button.addActionListener(listener);
   layout.setConstraints(button,constraints);
   container.add(button);
  }
  private class InsertAction implements ActionListener
    {
       public void actionPerformed(ActionEvent event)
       {
          String input=event.getActionCommand();
          if (start)
          {
             displayField.setText("");
             start=false;
             
             if(input.equals("+/-"))
             displayField.setText(displayField.getText()+"-"); 
          }
          if(!input.equals("+/-"))
          {
           if(input.equals("Backspace"))
           {
            String str=displayField.getText();
            if(str.length()>0)
              displayField.setText(str.substring(0,str.length()-1));
            }
           else if(input.equals("CE")||input.equals("C"))
           {
            displayField.setText("0");
            start=true;
           } 
           else
             displayField.setText(displayField.getText()+input);
         }
       }
    }
    private class CommandAction implements ActionListener
    {
       public void actionPerformed(ActionEvent evt)
       {
          String command=evt.getActionCommand();
          if(start)
          {
           lastCommand=command;
          }
          else
          {
          calculate(Double.parseDouble(displayField.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;
       displayField.setText(""+ result);
    }
   public static void  main(String []args)
   {
     Calculator calculator=new Calculator();
     calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
}

分享到:
评论

相关推荐

    Java计算器源程序

    摘要:Java源码,算法相关,计算器 一款简洁的Java计算器源程序,以前发过一些类似的小程序以,不过这次是在网页中运行的JAVA计算器程序,源码供您参考。。

    多彩计算器(java)源代码+截图+程序

    用java写的图形界面计算器,在Linux下完成,Windows 7下测试与之无异。 界面主要用swing和awt实现,有注释。代码共500行左右,算法部分100行不到,主要代码花在输入判断上,所有不合乎算式语法的都不能输入,即使乱...

    Java-GUI-带分数计算器

    这个是我学Java课程时一个GUI章节的上机测验,题目是利用以前学习的基础结合新学的GUI知识,写一个带分数计算器的程序。我写了两种风格界面的程序,这里放上题目和源码,同学们可以参考一二。

    基于Java的标准型计算器设计【开题报告】.doc

    3、设计Java计算器各个模块实现记忆功能,恢复以前保存的运算结果; 4、编写各模块代码实现计算器的其他高级功能; 5、调试Java计算器,完善计算器功能。 四、课题研究进度计划 第一周: 分析设计任务,查询各种所...

    java 小程序 合并excel(2010版)

    对于用java开发小程序 真是一窍不通 最后在网络上看到个计算器 好东西啊,swing 基本不会, 看到几个内部类 和构造函数里面放监听。我就用JFileChooser可以选择多个文件 嗯 good 就靠这个组件了。 然后 就是 poi ...

    android开发——简易计算器的设计报告.doc

    2、了解Eclipse,学会用Eclipse和Java 开发一个Android程序。 3、进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性 ,能够熟练的应用面向对象的思想和设计方法解决实际问题的能力。 4...

    Calculator:可以保存以前答案的简单计算器 Android 应用程序

    计算器简单的计算器 Android 应用程序,可以保存以前的答案。

    SmallCalculator:一个小型计算器,具有五个最简单的操作,用Python写成100行或更少的代码!

    小型计算器 一个小型计算器,具有五个最简单的操作,用Python写成100... (我在学习Python时就写了这篇文章,对此编程语言的简易程度深感惊讶,因此,我决定用少于100行的代码来取代以前用Java编写计算器的所有尝试。)

    科学型计算器 (绝对可以运行)

    科学型计算器 (绝对可以运行) 以前的课程设计来的

    calcdialoglib:Android的“计算器”对话框

    计算器对话框适用于...Gradle依赖implementation "com.maltaisn:calcdialog:X.Y.Z"用最新版本号替换XYZ : 从2.2.0版开始使用Google材料组件2.0.0版引入了许多重大更改,例如更改后的程序包名称。 有关的完整列表

    java课程设计题目..doc

    Java课程设计题目 一、课程设计总体要求: 本次课程设计是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回 顾和实践,因此,开始设计前学生一定要先回顾以前所学的内容,明确本次作业设计所要用 到的技术...

    train_ticket:中国火车票计算器

    本程序依据中国铁路总公司火车票预售期的规定确定,具体如下:2014.11.30及以前预售期为20天;12月1日预售期由20天延长至30天;12月2日至6日,预售期每天再比上一日延长6天;12月6日起,预售期延长至60天;12月7日,...

    java认证所有课程

    一般地,如果你想写一个程序,它基于一个事件而执行多个动作,把那些行为编写到处理器的方法里即可。然而,有时一个程序的设计要求同一程序的多个不相关的部分对于同一事件作出反应。这种情况是有可能的,例如,将一...

    西安苹果ios开发工具

    对Obj-C不是很熟悉,由于以前学的是java,所以经常会把java和Obj-C搞混,但是最终还是硬着头皮写完,并正常运行,经过了半个多月的学习,我学会了 搭建iOS环境并完成了一个小程序,这让我得到了很大的鼓舞,在今后的...

    chemistry-calculator:在我的chemistrycheminformatics计算器后面进行工作的文件的位置

    化学计算器 我的化学/化学信息学计算器项目背后的文件位置 ... 该程序可能需要花费一些时间才能连接到数据库API,最终显示与以前类似的提示。 当然,可以搜索任何内容,因此此演示的范围受到限制。 只要A

    FitJournal:健身日志

    一个应用程序,可帮助您跟踪您的食物摄入量以及您所做的运动。 ###它能做什么 记录每餐的千焦和蛋白质摄入量 记录每次锻炼燃烧的千焦耳 为您提供一天、一周、一个月等期间燃烧(或未燃烧)的千焦耳量 为您提供...

    adb1.0.26包含fastboot.exe

    一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里 查看设备信息 - IP 地址 一节里的方法用 adb 命令来查看。 通过 IP 地址连接设备。 adb connect 这里的 <device-ip-address> 就是...

Global site tag (gtag.js) - Google Analytics