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);

}

}

JAVA计算器算法实现

时间: 2024-10-18 15:23:08

JAVA计算器算法实现的相关文章

java设计之简单的JAVA计算器

做这个东西主要是为了练习一下以前学习过的java Swing,所以那些复杂的算法就没有加载到里面去........ 先展示一下效果....,额,当然不是这个样子....   ---> 代码: 1 package dialog_color; 2 3 import java.awt.BorderLayout; 4 import java.awt.Color; 5 import java.awt.Container; 6 import java.awt.FlowLayout; 7 import jav

Java Sort算法

//插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.SortUtil; /** * @author treeroot * @since 2006-2-2 * @version 1.0 */ public class InsertSort implements SortUtil.Sort{ /** (non-Javadoc) * @see org.rut.util.algorithm.SortU

java回收算法

两个最基本的java回收算法:复制算法和标记清理算法 复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B.此为新生代最常用的算法 标记清理:一块区域,标记要回收的对象,然后回收,一定会出现碎片,那么引出 标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象 两个概念:新生代和年老代 新生代:初始对象,生命周期短的 永久代:长时间存在的对象 整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收. P.S:Serial New收集器是针对新生代的收集器,采用的是复制算法

java排序算法之希尔排序

希尔排序是冲破二次时间屏障的第一批算法之一. 它是通过比较相距一定间隔的元素来工作,各趟比较所用的距离随着算法的进行而减小,直到最后一趟(比较相邻元素)为止.因此希尔排序也叫缩减增量排序. 希尔排序使用一个序列h1,h2,h3...hk来排序. 具体的意思是 第一趟排序比较的是相隔为hk的元素,也就是比较a[i]与a[i+hk],保证a[i]<=a[i+hk]. 第二次比较的是相隔为hk-1的元素,也就是比较a[i]与a[i+hk-1],保证a[i]<=a[i+hk-1]. 直到最后比较的是相

java 计算器SWT/RAP(版本3)键盘鼠标兼容

java 计算器SWT/RAP(版本3)键盘鼠标兼容,之前版本也对,但存在线程失效问题,当多人访问时,就容易线程失效,一直犯得一个错误就是一直用static变量和static方法, 之前加了什么js界面控制什么的,都没用,去掉static就好了 package cn.lesaas.nof.rwtswt.ui.dialog; import java.math.BigDecimal; import org.eclipse.swt.SWT;import org.eclipse.swt.events.S

java计算器 图形用户界面 升级版 v1.02

jsp页面: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.m

Java排序算法(一)

Java排序算法(一) 一.排序的基本概念和分类 1.1排序的定义 在<大话数据结构>中,排序定义为,假设含有n个记录的序列为{r1,r2,...,rn},其相应的关键字{k1,k2,...,kn},需确定1,2...n的一种排列p1,p2...pn,是其相应的关键字满足Kp1<=Kp2<=...<=Kpn(非递减或非递增)关键,即使得序列称为一个按关键字有序的序列{rp1,rp2...rp3},这样的操作称为排序. 1.2排序的稳定性 假设ki=kj(1<=i<

使用Java练习算法常用的基本操作

一.使用Java练习算法常常需要使用控制台的数据输入和输出,下面记录一下基本的使用方法: 基本用法 1 import java.util.*; 2 public class Main { 3 public static void main(String[] args){ 4 Scanner cin = new Scanner(System.in); //常用Scanner类来获取数据 5 int a = cin.nextInt(); //将输入的数据转换成int型赋给a,输入数据以空格或Tab分

Java经典算法案例

笔试中的编程题3 JAVA经典算法40例[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}pu