简易的科学计算器的实现

---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. DELPHI2007 安装ACTIVEX插件的方法

    先新建一个Package    file----NEW-----Package Delphi for win32, 再在Component->Import Component里面添加好Activ ...

  2. Lazarus中system.length说明

    在system单元中我们有Length专门用来获取字符串宽度和数组宽度,下面例子来介绍他的功能. 定义: function Length(   S: AStringType ):Integer; fu ...

  3. C++用数组实现的静态队列

    #ifndef _STATIC_QUEUE_H_ #define _STATIC_QUEUE_H_ // 静态queue模板,用数组实现的队列,在初始化的时候需要指定长度 template<cl ...

  4. MongoDB的find用法

    0.查询符合条件数据的总条数 如:db.list名.find({条件}).count(); 1.返回指定的键值:db.list.find({条件},{name:"任意值",age: ...

  5. Bundle文件的创建和使用(二)

    1.概念: An NSBundle object represents a location in the file system that groups code and resources tha ...

  6. strlen

    char c1[] = "sdfa";//系统自动添加结束字符 \0 char c2[] = {'1','2','3'};//这样赋值的话,要自己加上结束字符 \0 printf( ...

  7. qt QString 与 int,char的转换

    每次QString转换int或者char的时候都要查资料,记录一下,方便下次查看. 参考: http://blog.csdn.net/ei__nino/article/details/7297791 ...

  8. OceanBase架构浅析(二)

    单点性能 OceanBase架构的优势在于既支持跨行跨表事务,又支持存储服务器线性扩展.当然,这个架构也有一个明显的缺陷:UpdateServer单点,这个问题限制了OceanBase集群的整体读写性 ...

  9. Javascript数据类型的一些注意点

    1.字符串类型 substring()返回指定索引区间的子串: var s = 'hello, world' s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello ...

  10. JavaScript:文本域事件处理

    文本域往往可以输入大量的文字信息,但是在文本域上有一些键盘的处理事件:onkeydown.onkeypress.onkeyup. 范例一:观察文本域的键盘事件处理 代码如下: 效果图如下: 默认状态: ...