简易的科学计算器的实现
---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实现)
前记: 大二学 Java 的时候写的,现在贴上来,只为留念. 再翻代码,自己看着都头疼.一重重的 if 嵌套,当时写得费劲,现在看着更费劲. 代码思想: 代码的大致思想是这样: 首先定义一个算式字符串 ...
【java图形计算器】 java awt swing组件应用
package package1; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...
想找个计算器当本命?来试试UWP应用《纸书科学计算器》
久违了.上次在博客园发文还是4年前,正是高中参加NOIP的时候.这4年里发生了很多事,乃至再次看到过去的文章时,仿佛看到了自己也不熟悉的风景.最近很想把我的博客重新拾起来,慢慢灌溉,写一些微不足道的技 ...
整理一些《纸书科学计算器》的小Tips
本文最开始是在2016年的文章 Win10应用更新啦! 发表之后撰写的,当时那篇文章收到了不少人点赞,应用在国内市场的日下载量也突然上涨,让我感到受宠若惊,这里要感谢Wp ...
Win10应用《纸书科学计算器》更新啦!
在2016年8月拿了计算机设计大赛国家一等奖,现在仍记得我在答辩时还给评委们普及了一波UWP平台的知识.受此鼓励,这款应用也不会停下更新的脚步^_^.最近从1.9小幅升级 ...
html+css+js实现科学计算器
代码地址如下:http://www.demodashi.com/demo/13751.html 项目描述 纯html+css+js实现一个科学计算器,支持平方开方指数对数等基本函数,支持键盘输入,有简 ...
《学习R》笔记:科学计算器、检查变量和工作区、向量、矩阵和数组、列表和数据框
一.第二章 科学计算器 要检查两个数字是否一样,要使用 all.equal() ,不要使用 == ,== 符号仅用于比较两个整型数是否存在相同 . > all.equal(sqrt(2)^2,2 ...
数据结构之栈—强大的四则复杂运算计算器(超过windows自带的科学计算器)【中缀转后缀表达式】
比windows自带计算器还强的四则复杂运算计算器! 实测随机打出两组复杂算式:-7.5 * 6 / ( -2 + ( -6.5 - -5.22 ) )与7.5+-3*8/(7+2) windows ...
java小型科学计算器
/** * 1.先转换为逆波兰顺序 * 数字直接存入list,符号压入栈中,但是如果栈底元素不大于该运算符的运算顺序,则将栈底pop,直到大于栈底运算符为止,再压入栈中, * 最后将运算符依次全部po ...
随机推荐
9.29判断变量x是奇数还是偶数
方法一: package qqq; public class Jiou { public static void main(String[] args) { // TODO Auto-generate ...
Linux计算机进程地址空间与内核装载ELF
本文基于Linux™系统对进程创建与加载进行分析,文中实现了Linux库函数fork.exec,剖析内核态执行过程,并进一步展示进程创建过程中进程控制块字段变化信息及ELF文件加载过程. 一.初识Li ...
实现一个JavaScript模块化加载器
对任何程序,都存在一个规模的问题,起初我们使用函数来组织不同的模块,但是随着应用规模的不断变大,简单的重构函数并不能顺利的解决问题.尤其对JavaScript程序而言,模块化有助于解决我们在前端开发中 ...
OpenCV——KNN分类算法 <;摘>;
KNN近邻分类法(k-Nearest Neighbor)是一个理论上比较成熟的方法,也是最简单的机器学习算法之一. 这个算法首先贮藏所有的训练样本,然后通过分析(包括选举,计算加权和等方式)一个新样本 ...
使用 python 自动打包 Android 和 iOS
https://github.com/jinzunyue/package-Android-and-iOS
mariadb/mysql配置允许远程访问方式
首先配置允许访问的用户,采用授权的方式给用户权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT ...
PS 给天空添加蓝天白云<;转载>;
https://jingyan.baidu.com/article/b2c186c8e83b1cc46ef6ffee.html 给图片添加蓝天白云的步骤: 1.打开要加蓝天白云的照片.(如图一) [图 ...
使用MapReduce实现温度排序
温度排序代码,具体说明可以搜索其他博客 KeyPair.java package temperaturesort; import org.apache.hadoop.io.IntWritable; i ...