简易的科学计算器的实现

---Java版

 import javax.swing.*;//新的窗口组件包
import java.awt.*;
import java.awt.event.*;
public class rf implements ActionListener
{ JFrame jf=new JFrame();
boolean dotExist, operated, equaled; // 帮助运算的布尔变量
double result; // 目前的结果
char lastOperator; // 表示上一运算符
JTextField jtf; // 显示栏
JButton dot, plus, minus, multi, div, sqrt, equal, change, clear,quyu; // 运算符
JButton[] numbers;
Panel p=new Panel(); public rf() // 构造者
{
jf.setTitle("简易计算器");
// 初始化变量
dotExist = false; // 表示当前的数是否有小数点
operated = false; // 表示任意运算符是否被按下
equaled = false; // 表示等号是否被按下
result = ;
lastOperator = '?';
// 初始化窗口变量
jtf = new JTextField("");
jtf.setEditable(false); //设置文本框的可编辑性
jf.setSize(,);
jf.setVisible(true);
numbers = new JButton[];
for (int i = ; i < ; i++)
numbers[i] = new JButton("" + i); //从0到9,,10个数字按钮
dot = new JButton(".");
plus = new JButton("+");
minus = new JButton("-"); multi = new JButton("*");
div = new JButton("/");
sqrt = new JButton("√");
equal = new JButton("=");
change= new JButton("±");
clear = new JButton("NC"); //复位
quyu=new JButton("%"); p.setLayout(new GridLayout(,)); //绘制一个5行4列的布局管理器
p.add(numbers[]); //把各个按钮添加到布局管理器中
p.add(numbers[]);
p.add(numbers[]);
p.add(plus);
p.add(numbers[]);
p.add(numbers[]);
p.add(numbers[]);
p.add(minus);
p.add(numbers[]);
p.add(numbers[]);
p.add(numbers[]);
p.add(multi);
p.add(dot);
p.add(numbers[]);
p.add(sqrt);
p.add(div);
p.add(quyu);
p.add(change);
p.add(clear);
p.add(equal);
jf.add(jtf,BorderLayout.NORTH); //把显示框添加到北区也就是最上边
jf.add(p,BorderLayout.CENTER); //把各个按钮放到中区
numbers[].addActionListener(this); //鼠标事件监听器
numbers[].addActionListener(this);
numbers[].addActionListener(this);
numbers[].addActionListener(this);
plus.addActionListener(this);
numbers[].addActionListener(this);
numbers[].addActionListener(this);
numbers[].addActionListener(this);
minus.addActionListener(this);
numbers[].addActionListener(this);
numbers[].addActionListener(this);
numbers[].addActionListener(this);
multi.addActionListener(this);
dot.addActionListener(this);
sqrt.addActionListener(this);
div.addActionListener(this);
equal.addActionListener(this);
change.addActionListener(this);
clear.addActionListener(this);
quyu.addActionListener(this); }
// 对按钮进行反应的方法
public void actionPerformed(ActionEvent e)
{
JButton btn = (JButton)e.getSource();
if (btn == clear)
{
jtf.setText("");
dotExist = false; //小数点、运算符、等号、结果、上一个运算符
operated = false;
equaled = false;
result = ;
lastOperator = '?';
}
else if (btn == equal)
{
operate('=');
equaled = true;
}
else if (btn == plus)
{
operate('+');
equaled = false;
}
else if (btn == minus)
{
operate('-');
equaled = false;
}
else if (btn == multi)
{
operate('*');
equaled = false;
}
else if (btn == div)
{
operate('/');
equaled = false;
}
else if (btn==quyu){
operate('%');
equaled=false;
}
else if (btn == change) //正负号
{
operate('±');
operate('=');
equaled = true;
}
else if (btn == sqrt)
{
operate('√');
operate('=');
equaled = true;
}
else
{
if (equaled)
result = ;
for (int i = ; i < ; i++)
if (btn == numbers[i])
{
if (jtf.getText().equals(""))
jtf.setText("" + i);
else if(! operated) //如果按下的不是运算符
jtf.setText(jtf.getText() + i);
else
{
jtf.setText("" + i);
operated = false;
}
}
if (btn == dot && ! dotExist)
{
jtf.setText(jtf.getText() + "."); }
}
}
// 进行运算的方法
private void operate(char operator)
{
double currentNumber = Double.valueOf(jtf.getText()).doubleValue();
if (lastOperator == '?')
result = currentNumber;
else if (lastOperator == '+')
result += currentNumber;
else if (lastOperator == '-')
result -= currentNumber;
else if (lastOperator == '*')
result *= currentNumber;
else if (lastOperator == '/')
result /= currentNumber;
else if(lastOperator=='%')
result %=currentNumber;
else if (lastOperator == '±')
result *= -;
else if (lastOperator == '√')
result = Math.sqrt(currentNumber);
else if (lastOperator == '=' && equaled)
result = currentNumber; jtf.setText("" + result);
operated = true;
lastOperator = operator;
} public static void main(String[] args)
{new rf(); } //创建了一个rf的实例
}

科学计算器的Java实现的更多相关文章

  1. 科学计算器(JAVA实现)

    前记: 大二学 Java 的时候写的,现在贴上来,只为留念. 再翻代码,自己看着都头疼.一重重的 if 嵌套,当时写得费劲,现在看着更费劲. 代码思想: 代码的大致思想是这样: 首先定义一个算式字符串 ...

  2. 【java图形计算器】 java awt swing组件应用

    package package1; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...

  3. 想找个计算器当本命?来试试UWP应用《纸书科学计算器》

    久违了.上次在博客园发文还是4年前,正是高中参加NOIP的时候.这4年里发生了很多事,乃至再次看到过去的文章时,仿佛看到了自己也不熟悉的风景.最近很想把我的博客重新拾起来,慢慢灌溉,写一些微不足道的技 ...

  4. 整理一些《纸书科学计算器》的小Tips

    本文最开始是在2016年的文章 Win10应用<纸书科学计算器>更新啦! 发表之后撰写的,当时那篇文章收到了不少人点赞,应用在国内市场的日下载量也突然上涨,让我感到受宠若惊,这里要感谢Wp ...

  5. Win10应用《纸书科学计算器》更新啦!

    <纸书科学计算器>在2016年8月拿了计算机设计大赛国家一等奖,现在仍记得我在答辩时还给评委们普及了一波UWP平台的知识.受此鼓励,这款应用也不会停下更新的脚步^_^.最近从1.9小幅升级 ...

  6. html+css+js实现科学计算器

    代码地址如下:http://www.demodashi.com/demo/13751.html 项目描述 纯html+css+js实现一个科学计算器,支持平方开方指数对数等基本函数,支持键盘输入,有简 ...

  7. 《学习R》笔记:科学计算器、检查变量和工作区、向量、矩阵和数组、列表和数据框

    一.第二章 科学计算器 要检查两个数字是否一样,要使用 all.equal() ,不要使用 == ,== 符号仅用于比较两个整型数是否存在相同 . > all.equal(sqrt(2)^2,2 ...

  8. 数据结构之栈—强大的四则复杂运算计算器(超过windows自带的科学计算器)【中缀转后缀表达式】

    比windows自带计算器还强的四则复杂运算计算器! 实测随机打出两组复杂算式:-7.5 * 6 / ( -2 + ( -6.5 -  -5.22 ) )与7.5+-3*8/(7+2) windows ...

  9. JS编写的科学计算器

    最近半个月编写了一个JS+CSS+HTML的网页计算器,从最初的具有简陋界面的简单计算器改版到最终具有科学/标准计算器转换功能并且界面非常友好的计算器,收获良多!总的来说,代码简单,通俗易读,下面贴上 ...

随机推荐

  1. 【java】由equals和==的区别引出的常量池知识

    equals和==的区别,百度查到的结果大都是:equals比较的是值,==比较的是引用地址. String str1 = "abc"; String str2 = "a ...

  2. nodejs fs 模块

    件系统操作相关的函数挺多的.首先可以分为两大类. 一类是异步+回调的. 一类是同步的. 在这里只对异步的进行整理,同步的只需要在函数名称后面加上Sync即可 1. 首先是一类最常规的读写函数,函数名称 ...

  3. windbg sos版本不匹配问题解决

    dumpheap 时提示: 0:105> !dumpheap -stat The garbage collector data structures are not in a valid sta ...

  4. mongodb在win7下的安装和使用

    1.下载mongodb的windows版本,有32位和64位版本,根据系统情况下载,下载地址:http://www.mongodb.org/downloads 2.解压缩至额E:/mongodb即可 ...

  5. 【Android测试】【随笔】与 “美丽说” 测试同事交流

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5405432.html 分享者简介 雪晗,3年+测试经验,现 ...

  6. node.js express的安装过程

    1.配置nodejs的环境变量之后执行   npm install -g express  命令: 2.如果版本为4.x需要再次执行   npm install -g express-generato ...

  7. 常用分类列表wp_list_categories()

    使用: <ul> <?php $args= array( 'depth'=>1, 'orderby'=>id, 'style'=>none ); wp_list_c ...

  8. 关于Xib 需要注意的地方

    当你需要写一个繁琐的界面但是又是静态页面时,很可能会用到xib [特例:创建继承于UIView的文件时,不带自动生成xib的勾选项,需要开发人员手动new一个同名的xib文件,在该xib文件右侧的cl ...

  9. SqlServer2008R2 如何插入多条数据

    列id 为自增列 insert into Websites2values('Google','https://www.google.cm/','USA',1),('淘宝','https://www.t ...

  10. 【转】flash不建议设置wmode及wmode解释

    flash不建议设置wmode及wmode解释 2011-11-21 16:57:57|  分类: flash cs3 AS3.0|举报|字号 订阅     转自:http://www.webryan ...