网站建设资讯

NEWS

网站建设资讯

java前端计算器代码,java开发计算器

求java计算器的代码

import java.awt.*;

创新互联公司是一家专业提供祁县企业网站建设,专注与成都网站设计、网站制作H5开发、小程序制作等业务。10年已为祁县众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

public class Calculator extends JFrame{

private float op1,op2;//定义两个变量存放需要运算的值

private String str="";//定义str去和text进行交叉赋值

private String opr,co;//opr存放符合,co用来存放复制的内容

private double re;//用来存放运算的结果

private boolean bo=false;//是否进行了+-*/运算

private boolean btime=false;//时间开关

Container contentpane=this.getContentPane();

JPanel panel1=new JPanel(new BorderLayout()),

panel2=new JPanel(new FlowLayout()),

panel3=new JPanel(new GridLayout(4,5)),

panel4=new JPanel(new BorderLayout()),

panel5=new JPanel(new BorderLayout());

//菜单栏

JMenuBar menubar=new JMenuBar();

JMenu edit=new JMenu("编辑(E)"),

find=new JMenu("查看(V)"),

help=new JMenu("帮助(H)");

JMenuItem copy=new JMenuItem("复制(C)",'C'),

paste=new JMenuItem("粘贴(P)",'P'),

standard=new JMenuItem("标准型(T)",'T'),

science=new JMenuItem("科学型(S)",'S'),

numarray=new JMenuItem("数字分组(I)",'I'),

helptopic=new JMenuItem("帮助主题(H)",'H'),

aboutcal=new JMenuItem("关于计算器(A)",'A');

//输入文本框

JTextField text=new JTextField(25);

//数字键

JButton one=new JButton("1"),

two=new JButton("2"),

three=new JButton("3"),

four=new JButton("4"),

five=new JButton("5"),

six=new JButton("6"),

seven=new JButton("7"),

eight=new JButton("8"),

nine=new JButton("9"),

zero=new JButton("0");

//功能键

JButton division=new JButton("/"),

multiply=new JButton("*"),

addition=new JButton("+"),

subtration=new JButton("-"),

sqrt=new JButton("sqrt"),

residual=new JButton("%"),

sign=new JButton("+/-"),

dot=new JButton("."),

reciprocal=new JButton("1/X"),

amount=new JButton("="),

backspace=new JButton("Backspace"),

ce=new JButton("CE"),

c=new JButton("C"),

time=new JButton("time");

public Calculator() {

contentpane.setLayout(new BorderLayout());

//textField文本从右边开始写

text.setHorizontalAlignment(SwingConstants.RIGHT);

text.setText("0.");

//菜单栏添加

edit.add(copy);

edit.add(paste);

find.add(standard);

find.add(science);

find.addSeparator();

find.add(numarray);

help.add(helptopic);

help.addSeparator();

help.add(aboutcal);

//把组件添加至容器中

menubar.add(edit);

menubar.add(find);

menubar.add(help);

panel1.add(menubar,"North");

panel1.add(text,"West");

//添加数字、功能键至panel2、panel3

panel2.add(backspace);

panel2.add(ce);

panel2.add(c);

panel2.add(time);

panel3.add(seven);

panel3.add(eight);

panel3.add(nine);

panel3.add(division);

panel3.add(sqrt);

panel3.add(four);

panel3.add(five);

panel3.add(six);

panel3.add(multiply);

panel3.add(residual);

panel3.add(one);

panel3.add(two);

panel3.add(three);

panel3.add(subtration);

panel3.add(reciprocal);

panel3.add(zero);

panel3.add(sign);

panel3.add(dot);

panel3.add(addition);

panel3.add(amount);

panel4.add(panel2,"North");

panel4.add(panel3,"West");

panel5.add(panel1,"North");

panel5.add(panel4,"West");

contentpane.add(panel5,"North");

//事件

//助记符

edit.setMnemonic('E');

find.setMnemonic('V');

help.setMnemonic('H');

//快捷键

KeyStroke kcopy=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);

copy.setAccelerator(kcopy);

KeyStroke kpaste=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);

paste.setAccelerator(kpaste);

//0-9、.的显示事件

actionlistener1 al1=new actionlistener1();

one.addActionListener(al1);

two.addActionListener(al1);

three.addActionListener(al1);

four.addActionListener(al1);

five.addActionListener(al1);

six.addActionListener(al1);

seven.addActionListener(al1);

eight.addActionListener(al1);

nine.addActionListener(al1);

//小数点的ActionListener事件

dot.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

int count;

count=str.length();

//1.第一位就为.时改变text中内容为:"0."

if(count==0){

str="0.";

text.setText(str);

}

//2.不可以重复按"."

else {if(!str.contains(".")){

str+=".";

text.setText(str);

}

else

System.out.println("您再点的话,输入的将不再是小数了!");

}

}

});

//如果第一位是0那么第二位就不可以为0

zero.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

int count;

count=str.length();

if(bo){

if(!(str.contains("0")count==1)){

str="";

str+="0";

text.setText(str);

}else

System.out.println("您再点的话,输入的将不再是数字了!");

}

else{

if(!(str.contains("0")count==1)){

str+="0";

text.setText(str);

}else

System.out.println("您再点的话,输入的将不再是数字了!");

}

bo=false;

}

});

//+、-、*、/、%运算

actionlistener3 al3=new actionlistener3();

addition.addActionListener(al3);

subtration.addActionListener(al3);

multiply.addActionListener(al3);

division.addActionListener(al3);

residual.addActionListener(al3);

//CE和C清空按钮时间

actionlistener2 al2=new actionlistener2();

ce.addActionListener(al2);

c.addActionListener(al2);

//退格键

backspace.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

int count;

count=str.length()-1;

if(bo==false){

if(count=0){

str=str.substring(0,count);

text.setText(str);

}

else

text.setText("0.");

}else

System.out.println("您现在正进行法则运算!");

}

});

//求平方根

sqrt.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

int count;

count=str.length();

if(count!=0){

op1=Float.parseFloat(text.getText());

re=Math.sqrt(op1);

String str1=String.valueOf(re);

text.setText(str1);

str="";

}

else

System.out.println("您现在的按sqrt键毫无意义");

}

});

//求倒数

reciprocal.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

int count;

count=str.length();

if(count!=0){

op1=Float.parseFloat(text.getText());

if(op1!=0){

re=1/op1;

String str1=String.valueOf(re);

text.setText(str1);

str=str1;

}

else{

text.setText("除数不可以为0的");

str="";

}

}

else

System.out.println("您现在的按1/X键毫无意义");

}

});

//=事件

amount.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

op2=Float.parseFloat(str);

//需判断进行那种运算法则

if(opr=="+"){//加法运算

re=op1+op2;

String str1=String.valueOf(re);

text.setText(str1);

str=String.valueOf(re);

}else{

if(opr=="-"){//减法运算

re=op1-op2;

String str1=String.valueOf(re);

text.setText(str1);

str=String.valueOf(re);

}else{

if(opr=="*"){//乘法运算

re=op1*op2;

String str1=String.valueOf(re);

text.setText(str1);

str=String.valueOf(re);

}else{

if(opr=="/"op2!=0){//除法运算

re=op1/op2;

String str1=String.valueOf(re);

text.setText(str1);

str=String.valueOf(re);

}else{

if(opr=="%"){//取余运算

re=op1%op2;

String str1=String.valueOf(re);

text.setText(str1);

str="";

}

else if(op2==0){

text.setText("除数不可以为0的");

str="";

}

}

}

}

}

//打印看看

System.out.print(op1);

System.out.print(opr);

System.out.print(op2+"=");

System.out.print(re);

System.out.println();

}

});

//复制事件

copy.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

int count;

count=str.length();

if(count!=0){

co=text.getText();

}

else

System.out.println("没有可复制的对象");

}

});

//粘贴事件

paste.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

str=co;

text.setText(str);

}

});

//时间事件

time.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

if(btime==false){

String st=(new Date()).toString();

text.setText(st);

str="";

btime=true;

}

else{

text.setText(str);

btime=false;

}

}

});

//+/-事件

sign.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

int a=Integer.valueOf(str);

a=a*(-1);

str=String.valueOf(a);

text.setText(str);

}

});

}

//定义1-9按钮在text中显示的内部类

class actionlistener1 implements ActionListener{

public void actionPerformed(ActionEvent e){

JButton button=(JButton)e.getSource();

String btext=button.getText();

//如果第一位为0再输入其他非零的整数时将零忽略

if(bo){

if(str.indexOf("0")==0str.length()==1){

str="";

str+=btext;

text.setText(str);

}else{

str="";

str+=btext;

text.setText(str);}

}else{

if(str.indexOf("0")==0str.length()==1){

str="";

str+=btext;

text.setText(str);

}else{

str+=btext;

text.setText(str);

}

}

bo=false;

}

}

//定义清空text中内容的内部类

class actionlistener2 implements ActionListener{

public void actionPerformed(ActionEvent e){

str="";

text.setText("0.");

}

}

//定义+、-、*、/、%运算的内部类

class actionlistener3 implements ActionListener{

public void actionPerformed(ActionEvent e){

int count;

count=str.length();

if(count!=0){

JButton button=(JButton)e.getSource();

opr=button.getText();

op1=Float.parseFloat(str);

bo=true;

}

else

System.out.println("您现在的按键毫无意义!");

}

}

public static void main(String[] args){

Calculator cc=new Calculator();

cc.pack();

cc.setResizable(false);//不可最大化

cc.setVisible(true);

cc.setTitle("计算器");

cc.setDefaultCloseOperation(EXIT_ON_CLOSE);

Dimension scmsize=Toolkit.getDefaultToolkit().getScreenSize();

int w=cc.getSize().width;

int h=cc.getSize().height;

int x=(scmsize.width-w)/2;

int y=(scmsize.height-h)/2;

cc.setLocation(x, y);

}

}

求大神发个完整简单的java计算器代码,

public static void main(String[] args) {

System.out.println("简单计算器");

boolean flag=true;//while循环是否继续,true继续循环,false停止循环

System.out.println("请输入第一个数字");

while(flag){

Scanner scan = new Scanner(System.in);

String bh=scan.next();

try {

double num = Double.parseDouble(bh);

System.out.println("请输入符号(+、-、*、/)");

while(1==1){

String fh=scan.next();

if("+".equals(fh) || "-".equals(fh) || "*".equals(fh) || "/".equals(fh)){

System.out.println("请输入第二个数字");

while(1==1){

String bh2=scan.next();

try {

double num2 = Double.parseDouble(bh2);

double num3=0;

if("+".equals(fh)){

num3=num+num2;

}else if("-".equals(fh)){

num3=num-num2;

}else if("*".equals(fh)){

num3=num*num2;

}else if("/".equals(fh)){

num3=num/num2;

}

System.out.println(num3);

break;

} catch (Exception e) {

System.out.println("请输入第二个正确的数字");

continue;

}

}

break;

}else{

System.out.println("请输入正确的符号(+、-、*、/)");

continue;

}

}

System.out.println("是否继续运算:输入Y或者y继续,输入其它任意字符退出");

String yn=scan.next();

if("Y".equals(yn) || "y".equals(yn)){

continue;

}else{

System.out.println("运算结束");

break;

}

}catch (NumberFormatException e) {//输入非数字类型时

System.out.println("请输入第一个正确的数字");

continue;

}

}

}

求用JAVA实现计算器的代码(可实用的,没语法错误的)

import java.awt.BorderLayout; import java.awt.Color; 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.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.TitledBorder; //导包 public class Jisuanqi extends JFrame implements ActionListener { //继承JFrame 实现事件监听 private JTextField reasult; private JButton btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0, btnAC, btnAdd, btnSub, btnReasult, btnD, btnAbout, btnCancel; private boolean add, sub, end, s, c; private String str; private double num1, num2; public Jisuanqi() { //构造属性 JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JPanel p3 = new JPanel(); TitledBorder tb = new TitledBorder("输出"); tb.setTitleColor(Color.BLUE); //标题边框底端线 设置颜色 btnAbout = new JButton(" 关于 "); btnCancel = new JButton("Cancel"); //两个按钮 btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ee) { System.exit(0); } }); //给Cancel添加事件监听 当鼠标点击时 程序结束 btnAbout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ee) { JOptionPane.showMessageDialog(null, "黄盖!!", "消息", JOptionPane.INFORMATION_MESSAGE); } //给“关于”添加事件监听 当鼠标点击时 弹出对话框 显示黄盖 }); p3.add(btnAbout); p3.add(btnCancel); // JPanel p4=new JPanel(); // JPanel p5=new JPanel(); // reasult.setBorder(tb); reasult = new JTextField("0", 20); reasult.setEditable(false); //设置不能修改 reasult.setHorizontalAlignment(JTextField.RIGHT); // 设置文本的水平对齐方式。 reasult.setForeground(Color.BLUE); //颜色 p1.setBorder(tb); p1.add(reasult); btn0 = new JButton("0"); btn0.addActionListener(this); btn1 = new JButton("1"); btn1.addActionListener(this); btn2 = new JButton("2"); btn2.addActionListener(this); btn3 = new JButton("3"); btn3.addActionListener(this); btn4 = new JButton("4"); btn4.addActionListener(this); btn5 = new JButton("5"); btn5.addActionListener(this); btn6 = new JButton("6"); btn6.addActionListener(this); btn7 = new JButton("7"); btn7.addActionListener(this); btn8 = new JButton("8"); btn8.addActionListener(this); btn9 = new JButton("9"); btn9.addActionListener(this); btnD = new JButton("."); btnD.addActionListener(this); btnD.setForeground(Color.RED); btnAC = new JButton("AC"); btnAC.addActionListener(this); btnAC.setBackground(Color.PINK); btnAdd = new JButton("+"); btnAdd.addActionListener(this); btnAdd.setForeground(Color.BLUE); btnSub = new JButton("—"); btnSub.addActionListener(this); btnSub.setForeground(Color.BLUE); btnReasult = new JButton("="); btnReasult.addActionListener(this); btnReasult.setForeground(Color.RED); //事件监听 + 颜色 p2.add(btn1); p2.add(btn2); p2.add(btn3); p2.add(btn4); p2.add(btn5); p2.add(btn6); p2.add(btn7); p2.add(btn8); p2.add(btn9); p2.add(btn0); p2.add(btnD); p2.add(btnAC); p2.add(btnAdd); p2.add(btnSub); p2.add(btnReasult); //面板上添加按钮 p2.setLayout(new GridLayout(5, 3)); //面板上设置对齐方式 add(p1, BorderLayout.NORTH); add(p2, BorderLayout.CENTER); add(p3, BorderLayout.SOUTH); //将p1 p2 p3 面板对象添加到JFrame } public void num(int i) { String s = null; s = String.valueOf(i); if (end) { // 如果数字输入结束,则将文本框置零,重新输入 reasult.setText("0"); end = false; } if ((reasult.getText()).equals("0")) { // 如果文本框的内容为零,则覆盖文本框的内容 reasult.setText(s); } else { // 如果文本框的内容不为零,则在内容后面添加数字 str = reasult.getText() + s; reasult.setText(str); } }/* * * String s=null; * * s=String.valueOf(i); * * str=reasult.getText()+s; * * reasult.setText(str); * * } */ public void actionPerformed(ActionEvent e) { if (e.getSource() == btn1) num(1); else if (e.getSource() == btn2) num(2); else if (e.getSource() == btn3) num(3); else if (e.getSource() == btn4) num(4); else if (e.getSource() == btn5) num(5); else if (e.getSource() == btn6) num(6); else if (e.getSource() == btn7) num(7); else if (e.getSource() == btn8) num(8); else if (e.getSource() == btn9) num(9); else if (e.getSource() == btn0) num(0); else if (e.getSource() == btnAdd) { sign(1); btnD.setEnabled(true); } else if (e.getSource() == btnSub) { sign(2); btnD.setEnabled(true); } else if (e.getSource() == btnAC) { btnD.setEnabled(true); reasult.setText("0"); } else if (e.getSource() == btnD) { str = reasult.getText(); str += "."; reasult.setText(str); btnD.setEnabled(false); } else if (e.getSource() == btnReasult) { btnD.setEnabled(true); num2 = Double.parseDouble(reasult.getText()); if (add) { num1 = num1 + num2; } else if (sub) { num1 = num1 - num2; } reasult.setText(String.valueOf(num1)); end = true; } } public void sign(int s) { if (s == 1) { add = true; sub = false; } else if (s == 2) { add = false; sub = true; } num1 = Double.parseDouble(reasult.getText()); end = true; } //设计计算的过程 public static void main(String[] args) { Jisuanqi j = new Jisuanqi(); j.setTitle("+/-简易计算器"); j.setLocation(500, 280); j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //默认关闭可以关闭程序 j.setResizable(false); j.pack(); j.setVisible(true); } } 这个计算机,绝对让你满意

JAVA 编写计算器 要代码最简单的

学java的时候自己编的,很简单,能够连续输入计算式后进行计算

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.text.NumberFormat;

import java.util.ArrayList;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

/**简易计算器,能够进行简单的计算

*

* @see 2008.12.9

*/

public class CalculatorA

implements ActionListener{

private JFrame frame;

private JTextField field;

private JButton[] allButtons;

private JButton clearButton;

// private JButton backButton;

String result="";//保存结果

StringBuilder sb = new StringBuilder();//保存要进行的计算式

int x = 0; //用来判断上一次的事件类型

String str = "123+456-789*0.=/";

ArrayListString arrayList = new ArrayListString();//保存计算式,通过方法进行运算

public CalculatorA(){

frame = new JFrame("我的计算器v1.1");

frame.setLocation(300,300);

field = new JTextField(25);

allButtons = new JButton[16];

for(int i=0;iallButtons.length;i++){

allButtons[i]= new JButton(str.substring(i,i+1));

}

clearButton = new JButton("CLEAR");

// backButton = new JButton("——");

init();

setFondAndColor();

addEventHander();

}

public void init(){

frame.setLayout(new BorderLayout());

JPanel northPanel = new JPanel();

JPanel centerPanel = new JPanel();

JPanel southPanel = new JPanel();

northPanel.setLayout(new FlowLayout());

centerPanel.setLayout(new GridLayout(4,4));

southPanel.setLayout(new FlowLayout());

northPanel.add(field);

for(int i=0;iallButtons.length;i++){

centerPanel.add(allButtons[i]);

}

southPanel.add(clearButton);

//southPanel.add(backButton);

frame.add(northPanel,BorderLayout.NORTH);

frame.add(centerPanel,BorderLayout.CENTER);

frame.add(southPanel,BorderLayout.SOUTH);

}

//设置输入字体

public void setFondAndColor(){

field.setFont(new Font("宋体",Font.BOLD,24));

field.setBackground(new Color(100,200,200));

field.setForeground(Color.RED);

//设置字体从右起始

field.setHorizontalAlignment(JTextField.RIGHT);

}

public void showMi(){

frame.pack();

frame.setResizable(false);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void addEventHander(){

for(int i=0;iallButtons.length;i++){

allButtons[i].addActionListener(this);

}

clearButton.addActionListener(this);

// backButton.addActionListener(this);

}

@Override

public void actionPerformed(ActionEvent e) {

String str = e.getActionCommand();//取得当前事件返回的值

if("0123456789.".indexOf(str)!=-1){

if(x == 0){ //当x为0时表示还没有进行输入

result=str;

sb.append(str);

field.setText(str);

x = 1;

}

else if(x == 1){

result = result +str;

sb.append(str);

field.setText(result);

x = 1;

}

else if(x == 2){

sb.delete(0,sb.length());

result = result+str;

sb.append(str);

field.setText(result);

x = 1;

}

else if(x == 3){

result = str;

sb.delete(0,sb.length());

arrayList.clear();

field.setText(str);

sb.append(str);

field.setText(str);

x = 1;

}

else if(x == 4){

result ="";

sb.delete(0,sb.length());

arrayList.clear();

result = str;

sb.append(str);

field.setText(str);

x = 1;

}

else{

result = result +str;

sb.append(str);

field.setText(result);

x = 1;

}

}

else if("+*-/".indexOf(str)!=-1){

if(x == 0){

field.setText("");

x = 2;

}

else if(x == 1){

result = result + str;

arrayList.add(sb.toString());

arrayList.add(str);

sb.append(str);

field.setText(result);

x = 2;

}

else if(x == 2){

x = 2;

}

else if(x == 3){

field.setText(result+str);

arrayList.add(result);

arrayList.add(str);

result = result+str;

x = 2;

}

else if(x == 4){

result ="";

sb.delete(0,sb.length());

arrayList.clear();

x = 2;

}

else{

field.setText(result+str);

arrayList.add(result);

arrayList.add(str);

result = result+str;

x = 2;

}

}

else if("=".equals(str)){

if(x == 0){

field.setText("0");

arrayList.clear();

result = "0";

x = 3;

}

else if(x == 1){

try{

arrayList.add(sb.toString());

arrayList = getResult(arrayList);

result = arrayList.get(0);

field.setText(result);

arrayList.clear();

x = 3;

}catch(Exception e1){

field.setText("数据格式异常");

x = 0;

}

}

else if(x == 2){

field.setText("数据格式错误.....");

arrayList.clear();

x = 0;

}

else if(x == 3){

field.setText(result);

x = 3;

}

else if(x == 4){

result ="";

sb.delete(0,sb.length());

arrayList.clear();

x = 3;

}

else {

try{

arrayList.add(sb.toString());

arrayList = getResult(arrayList);

result = arrayList.get(0);

field.setText(result);

arrayList.clear();

x = 3;

}catch(Exception e1){

field.setText("数据格式异常");

x = 0;

}

}

}

else if("CLEAR".equals(str)){

arrayList.clear();

field.setText("0");

arrayList.add("0");

x = 4;

}

else{

if(result.length()1){

result = result.substring(0,result.length()-1);

if(sb.length()0){

sb.delete(sb.length()-1,sb.length());

}

else {

sb.delete(0,1);

}

field.setText(result);

x = 5;

}

else{

result = "";

sb.delete(0,sb.length());

arrayList.clear();

field.setText("0");

x = 0;

}

}

}

public static ArrayListString getResult(ArrayListString list){

String res = null;

String[] s = {"/","*","-","+"};

int i=0;

if(list.size()1){

for(;is.length;){

if(s[i].equals("/")){

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))/Double.parseDouble(list.get(j+1)));

//本地的数据格式

NumberFormat nf = NumberFormat.getInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

else if(s[i].equals("*")){

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))*Double.parseDouble(list.get(j+1)));

NumberFormat nf = NumberFormat.getInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

else if(s[i].equals("-")){

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))-Double.parseDouble(list.get(j+1)));

NumberFormat nf = NumberFormat.getNumberInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

else {

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))+Double.parseDouble(list.get(j+1)));

NumberFormat nf = NumberFormat.getInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

}

}

return list;

}

//对数字字符串进行排除不必要符号

public static String getChange(String res){

String s_temp = "";

char[] c = new char[res.length()];

for(int k=0;kc.length;k++){

c[k] = res.charAt(k);

}

for(int k=0;kc.length;k++){

if((c[k]= '0' c[k]= '9')|| c[k] == '.'){

s_temp += c[k];

}

}

return s_temp;

}

public static void main(String[] args){

new CalculatorA().showMi();

}

}

java 计算器代码

import javax.swing.*;

import javax.swing.border.Border;

import java.awt.*;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.math.BigDecimal;

import java.math.RoundingMode;

import java.util.HashMap;

/**

* 我的计算器。Cheshi 继承于 JFrame,是计算器的界面

c*/

public class Cheshi extends JFrame {

private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);

private JTextField textbox = new JTextField("0");

private CalculatorCore core = new CalculatorCore();

private ActionListener listener = new ActionListener() {

public void actionPerformed(ActionEvent e) {

JButton b = (JButton) e.getSource();

String label = b.getText();

String result = core.process(label);

textbox.setText(result);

}

};

public Cheshi(String title) throws HeadlessException {

super(title); // 调用父类构造方法

setupFrame(); // 调整窗体属性

setupControls(); // 创建控件

}

private void setupControls() {

setupDisplayPanel(); // 创建文本面板

setupButtonsPanel(); // 创建按钮面板

}

// 创建按钮面板并添加按钮

private void setupButtonsPanel() {

JPanel panel = new JPanel();

panel.setBorder(border);

panel.setLayout(new GridLayout(4, 5, 3, 3));

createButtons(panel, new String[]{

"7", "8", "9", "+", "C",

"4", "5", "6", "-", "CE",

"1", "2", "3", "*", "", // 空字符串表示这个位置没有按钮

"0", ".", "=", "/", ""

});

this.add(panel, BorderLayout.CENTER);

}

/**

* 在指定的面板上创建按钮

*

* @param panel 要创建按钮的面板

* @param labels 按钮文字

*/

private void createButtons(JPanel panel, String[] labels) {

for (String label : labels) {

// 如果 label 为空,则表示创建一个空面板。否则创建一个按钮。

if (label.equals("")) {

panel.add(new JPanel());

} else {

JButton b = new JButton(label);

b.addActionListener(listener); // 为按钮添加侦听器

panel.add(b);

}

}

}

// 设置显示面板,用一个文本框来作为计算器的显示部分。

private void setupDisplayPanel() {

JPanel panel = new JPanel();

panel.setLayout(new BorderLayout());

panel.setBorder(border);

setupTextbox();

panel.add(textbox, BorderLayout.CENTER);

this.add(panel, BorderLayout.NORTH);

}

// 调整文本框

private void setupTextbox() {

textbox.setHorizontalAlignment(JTextField.RIGHT); // 文本右对齐

textbox.setEditable(false); // 文本框只读

textbox.setBackground(Color.white); // 文本框背景色为白色

}

// 调整窗体

private void setupFrame() {

this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 当窗体关闭时程序结束

this.setLocation(100, 50); // 设置窗体显示在桌面上的位置

this.setSize(300, 200); // 设置窗体大小

this.setResizable(false); // 窗体大小固定

}

// 程序入口

public static void main(String[] args) throws Exception {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

Cheshi frame = new Cheshi("我的计算器");

frame.setVisible(true); // 在桌面上显示窗体

}

}

/**

* 计算器核心逻辑。这个逻辑只能处理 1~2 个数的运算。

*/

class CalculatorCore {

private String displayText = "0"; // 要显示的文本

boolean reset = true;

private BigDecimal number1, number2;

private String operator;

private HashMapString, Operator operators = new HashMapString, Operator();

private HashMapString, Processor processors = new HashMapString, Processor();

CalculatorCore() {

setupOperators();

setupProcessors();

}

// 为每种命令添加处理方式

private void setupProcessors() {

processors.put("[0-9]", new Processor() {

public void calculate(String command) {

numberClicked(command);

}

});

processors.put("\\.", new Processor() {

public void calculate(String command) {

dotClicked();

}

});

processors.put("=", new Processor() {

public void calculate(String command) {

equalsClicked();

}

});

processors.put("[+\\-*/]", new Processor() {

public void calculate(String command) {

operatorClicked(command);

}

});

processors.put("C", new Processor() {

public void calculate(String command) {

clearClicked();

}

});

processors.put("CE", new Processor() {

public void calculate(String command) {

clearErrorClicked();

}

});

}

// 为每种 operator 添加处理方式

private void setupOperators() {

operators.put("+", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.add(number2);

}

});

operators.put("-", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.subtract(number2);

}

});

operators.put("*", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.multiply(number2);

}

});

operators.put("/", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.divide(number2, 30, RoundingMode.HALF_UP);

}

});

}

// 根据命令处理。这里的命令实际上就是按钮文本。

public String process(String command) {

for (String pattern : processors.keySet()) {

if (command.matches(pattern)) {

processors.get(pattern).calculate(command);

break;

}

}

return displayText;

}

// 当按下 CE 时

private void clearErrorClicked() {

if (operator == null) {

number1 = null;

} else {

number2 = null;

}

displayText = "0";

reset = true;

}

// 当按下 C 时,将计算器置为初始状态。

private void clearClicked() {

number1 = null;

number2 = null;

operator = null;

displayText = "0";

reset = true;

}

// 当按下 = 时

private void equalsClicked() {

calculateResult();

number1 = null;

number2 = null;

operator = null;

reset = true;

}

// 计算结果

private void calculateResult() {

number2 = new BigDecimal(displayText);

Operator oper = operators.get(operator);

if (oper != null) {

BigDecimal result = oper.process(number1, number2);

displayText = result.toString();

}

}

// 当按下 +-*/ 时(这里也可以扩展成其他中间操作符)

private void operatorClicked(String command) {

if (operator != null) {

calculateResult();

}

number1 = new BigDecimal(displayText);

operator = command;

reset = true;

}

// 当按下 . 时

private void dotClicked() {

if (displayText.indexOf(".") == -1) {

displayText += ".";

} else if (reset) {

displayText = "0.";

}

reset = false;

}

// 当按下 0-9 时

private void numberClicked(String command) {

if (reset) {

displayText = command;

} else {

displayText += command;

}

reset = false;

}

// 运算符处理接口

interface Operator {

BigDecimal process(BigDecimal number1, BigDecimal number2);

}

// 按钮处理接口

interface Processor {

void calculate(String command);

}

}


标题名称:java前端计算器代码,java开发计算器
URL网址:http://cdweb.net/article/hdsigi.html