JAVA计算器算法实现

简介: JAVA计算器算法实现
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BorderJFrame extends JFrame {
private JButton display;
private JPanel jp;
private boolean start;
private String lastCommand;
private double result;
public BorderJFrame(){
this.setLayout(new BorderLayout());
this.result=0;
this.start=true;
this.lastCommand="=";
this.display=new JButton("0");
this.display.setEnabled(false);
add(display, BorderLayout.NORTH);
ActionListener insert=new InsertAction();
ActionListener command=new CommandAction();
int k=7;
this.setSize(300, 200);
jp=new JPanel();
jp.setLayout(new GridLayout(4, 4));
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
if(j==4){
if(i==1){
this.addButton("/",command);
}else if(i==2){
this.addButton("*",command);
}else if(i==3){
this.addButton("-",command);
}
}else if(i==4){
this.addButton("0", insert);
this.addButton(".",command);
this.addButton("=",command);
this.addButton("+",command);
break;
}else{
this.addButton(String.valueOf(k), insert);
k++;
}
}
k=k-6;
}
this.add(jp,BorderLayout.CENTER);
}
private class CommandAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String command=e.getActionCommand();
if(start){
if(command.equals("-")){
display.setText(command);
start=false;
}else{
lastCommand=command;
}
}else{
calculate(Double.parseDouble(display.getText()));
lastCommand=command;
start=true;
}
}
}
private class InsertAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String input=e.getActionCommand();
if(start){
display.setText("");
start=false;
}
display.setText(display.getText()+input);
}
}
private void addButton(String label,ActionListener listener){
JButton button=new JButton(label);
button.addActionListener(listener);
this.jp.add(button);
}
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;
this.display.setText(""+result);
}
}
相关文章
|
20小时前
|
算法 Java
Java中CAS算法的集中体现:Atomic原子类库,你了解吗?
【5月更文挑战第15天】Java中CAS算法的集中体现:Atomic原子类库,你了解吗?
10 1
|
3天前
|
算法 搜索推荐 Java
滚雪球学Java(33):数组算法大揭秘:应用案例实战分享
【5月更文挑战第8天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
31 8
滚雪球学Java(33):数组算法大揭秘:应用案例实战分享
|
5天前
|
缓存 算法 Java
数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,万字解析
数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,万字解析
|
5天前
|
NoSQL 算法 Java
【redis源码学习】持久化机制,java程序员面试算法宝典pdf
【redis源码学习】持久化机制,java程序员面试算法宝典pdf
|
6天前
|
搜索推荐 算法 Java
滚雪球学Java(29):数组长度和排序算法:让你的程序更高效
【5月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
13 0
滚雪球学Java(29):数组长度和排序算法:让你的程序更高效
|
6天前
|
算法 安全 Java
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
【4月更文挑战第28天】性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
36 1
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
|
6天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
6天前
|
搜索推荐 算法 Java
Java实现的常用八种排序算法
提到数据结构与算法,无法避免的一点就包含排序,熟练的掌握各种排序算法则是一个程序员必备的素质之一,除此之外,排序算法也是当下各大技术公司比较喜欢问的技术点,所以,就这一点JavaBuild整理了常见的8种排序算法
13 0
|
6天前
|
机器学习/深度学习 数据采集 算法
使用 Java 实现机器学习算法
【4月更文挑战第19天】Java在数据驱动时代为机器学习提供支持,具备丰富的数学和数据结构库,适用于实现线性回归、决策树、SVM和随机森林等算法。实现时注意数据预处理、模型选择、评估指标和可视化。利用Java的库和编程能力可构建高效模型,但需按问题需求选择合适技术和优化方法。
|
6天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出&quot;验证成功&quot;,否则输出&quot;验证失败&quot;。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。