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);
}
}
相关文章
|
4天前
|
监控 算法 网络协议
Java 实现局域网电脑屏幕监控算法揭秘
在数字化办公环境中,局域网电脑屏幕监控至关重要。本文介绍用Java实现这一功能的算法,涵盖图像采集、数据传输和监控端显示三个关键环节。通过Java的AWT/Swing库和Robot类抓取屏幕图像,使用Socket进行TCP/IP通信传输图像数据,并利用ImageIO类在监控端展示图像。整个过程确保高效、实时和准确,为提升数字化管理提供了技术基础。
35 15
|
3月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
101 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
10天前
|
缓存 算法 搜索推荐
Java中的算法优化与复杂度分析
在Java开发中,理解和优化算法的时间复杂度和空间复杂度是提升程序性能的关键。通过合理选择数据结构、避免重复计算、应用分治法等策略,可以显著提高算法效率。在实际开发中,应该根据具体需求和场景,选择合适的优化方法,从而编写出高效、可靠的代码。
25 6
|
3月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
54 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
3月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
161 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
3月前
|
存储 算法 Java
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
前缀(波兰)表达式、中缀表达式和后缀(逆波兰)表达式的基本概念、计算机求值方法,以及如何将中缀表达式转换为后缀表达式,并提供了相应的Java代码实现和测试结果。
160 0
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
|
3月前
|
算法 Java Linux
java制作海报一:java使用Graphics2D 在图片上写字,文字换行算法详解
这篇文章介绍了如何在Java中使用Graphics2D在图片上绘制文字,并实现自动换行的功能。
164 0
|
3月前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
43 0
|
5月前
|
设计模式 缓存 算法
揭秘策略模式:如何用Java设计模式轻松切换算法?
【8月更文挑战第30天】设计模式是解决软件开发中特定问题的可重用方案。其中,策略模式是一种常用的行为型模式,允许在运行时选择算法行为。它通过定义一系列可互换的算法来封装具体的实现,使算法的变化与客户端分离。例如,在电商系统中,可以通过定义 `DiscountStrategy` 接口和多种折扣策略类(如 `FidelityDiscount`、`BulkDiscount` 和 `NoDiscount`),在运行时动态切换不同的折扣逻辑。这样,`ShoppingCart` 类无需关心具体折扣计算细节,只需设置不同的策略即可实现灵活的价格计算,符合开闭原则并提高代码的可维护性和扩展性。
74 2
|
5月前
|
安全 算法 Java
java系列之~~网络通信安全 非对称加密算法的介绍说明
这篇文章介绍了非对称加密算法,包括其定义、加密解密过程、数字签名功能,以及与对称加密算法的比较,并解释了非对称加密在网络安全中的应用,特别是在公钥基础设施和信任网络中的重要性。