用JAVA编写计算器程序模拟Windows计算器
用JAVA编写计算器程序(模拟Windows计算器)
import java.awt.*;
import ;
public class Calculation extends WindowAdapter implements ActionListener
{
double dResult=0;
double dNowInput=0;
double dMemory;
int n=0; //记载小数位数
int nOperation=1; // 记录运算符类型
int nBitsNum=0; //记录总共输入的位数
boolean alreadyHaveDot=false; //已经有小数点?
boolean keyAvailable=true;
boolean alreadyClickedEqueal=false; //是否按下过"="?
boolean isTempNowInput=false; //是否在计算出结果后直接按运算符将结果赋给了当前输入值?
Frame f;
Panel p1,p2,p3,p4,p5,p6;
TextField tf1,tf2;
Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;
Button bDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative; Button bBackspace,bCE,bC,bMR,bMS,bMC,bM;
public void display()
{
f=new Frame("计算器");
f.setSize(280,213);
f.setLocation(200,200);
f.setBackground(Color.LIGHT_GRAY);
f.setResizable(false);
f.setLayout(new BorderLayout(3,3));
p1=new Panel(new GridLayout(1,3,5,5)); //用于存放backspace,ce,c三键
p2=new Panel(new GridLayout(4,5,5,5)); //用于存放数字区及附近共20键, 此处间隙设置可能不合理,以后调整
p3=new Panel(new GridLayout(5,1,5,5)); //用于存放MC,MR,MS,M+键及显示M状态文本框,此处间隙设置可能不合理,以后调整
p4=new Panel(new FlowLayout()); //用于存放p1,p2
p5=new Panel(new FlowLayout());
p6=new Panel(new FlowLayout());
p4.add(p1);
p4.add(p2);
tf1=new TextField(35); //存放显示区
tf1.setText("0.");
tf1.setEditable(false);
p5.add(tf1);
f.add(p5,BorderLayout.NORTH);
f.add(p4,BorderLayout.CENTER);
f.add(p3,BorderLayout.WEST);
b1=new Button("1");
b2=new Button("2");
b3=new Button("3");
b4=new Button("4");
b5=new Button("5");
如有你有帮助,请购买下载,谢谢!b6=new Button("6");
b7=new Button("7");
b8=new Button("8");
b9=new Button("9");
b0=new Button("0");
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b0.addActionListener(this);
bDiv=new Button("/");
bSqrt=new Button("sqrt");
bMulti=new Button("*");
bMinus=new Button("-");
bPercent=new Button("%");
bPlus=new Button("+");
bReciprocal=new Button("1/x");
bEqual=new Button("=");
bDot=new Button(".");
bNegative=new Button("+/-");
bDiv.addActionListener(this);
bSqrt.addActionListener(this);。
用Java编写一个简单的计算器
b3.setForeground(Color.red);
b3.addActionListener(new button());
b4 = new JButton("MR");
b4.setForeground(Color.red);
b4.addActionListener(new button());
p4.add(tf2);
p4.setBounds(10,88,50,60);
p1.setLayout(gl1);
p1.setBounds(75, 87, 317, 35);
p2.setLayout(gl2);
p2.setBounds(10, 135, 60, 250);
p3.setLayout(gl3);
tf2 = new TextField(10);
tf2.setEditable(false);
setBackground(new Color(180,127,120));
setBounds(300, 250, 400, 400);
p0.add(tf1);
p0.setBounds(5, 50, 390,40);
gl3 = new GridLayout(4, 5, 5, 5);
tf1 = new JTextField(27);
tf1.setHorizontalAlignment(JTextField.RIGHT);
tf1.setEnabled(false);
tf1.setText("0.");
MenuItem mi1=new MenuItem("复制(C) Ctrl+C ");
java实现简单计算器
@Override
public void windowClosing(WindowEvent e)
{
System.exit(-1);
}
}
);
}
}
public class Test5
{
public static void main(String[] args)
switch(str)
{
case "0":
case "1":
case "2":
case "3":
case "4":;
case "5":
case "6":
case "7":
case "8":
case "9":
if (mf.data.size()==2)
public MyActionClick1(MyFrameCal1 mf)
{
this.mf = mf;
}
@Override
public void actionPerformed(ActionEvent e)
{
String str = e.getActionCommand();
{
new MyFrameCal1().lauch();
}
}
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import javax.swing.JOptionPane;
6模拟计算器JAVA程序
模拟计算器java程序一.需求分析日常生活中,我们经常会碰到一些计算问题,因计算量大而复杂,是人头痛,所以计算器就诞生了。
计算器这一小小的程序机器实际上是从计算机中割裂出来的衍生品,但因其方便快捷的操作模式,已经被广泛应用于商业等日常生活中,极大的方便了人们对于数字的整合运算。
二.程序功能及说明/*实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。
界面将模拟Windows中的计算器程序。
*/import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.Hashtable;public class Calculator extends Frame implements ActionListener{Panel txtpanel,btnpanel,southpanel;JTextField txtinput;JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bdes,bf;JButtonchengbtn,chubtn,jiabtn,jianbtn,clearbtn,equalbtn,sinbtn,cosbtn,jiechengbtn, sqrtbtn,zhishubtn,daoshubtn;double sum,result;Menu editM,searchM,helpM;MenuBar bar;String sign;boolean bool=true;public Calculator(){super("计算器");txtpanel=new Panel();btnpanel=new Panel();southpanel=new Panel();txtinput=new JTextField(40);txtinput.setEditable(false);txtinput.setText("");bar=new MenuBar();helpM=new Menu("帮助");helpM.add(new MenuItem("帮助主题")); helpM.addSeparator();helpM.add(new MenuItem("sin正弦")); helpM.add(new MenuItem("cos余弦")); helpM.add(new MenuItem("!阶乘")); helpM.add(new MenuItem("C清除")); helpM.add(new MenuItem("÷除"));helpM.add(new MenuItem("*乘"));helpM.add(new MenuItem("+加"));helpM.add(new MenuItem("-减"));helpM.add(new MenuItem("+/-正负变号")); helpM.add(new MenuItem("√开方")); helpM.add(new MenuItem("1/x倒数x^y")); helpM.add(new MenuItem("x^y次方")); helpM.add(new MenuItem("1~9数字键")); helpM.add(new MenuItem("=等于"));bar.add(helpM);setMenuBar(bar);//关联各键与符号并设置键的符号字体大小及颜色b1=new JButton("1");b1.setFont(new Font("1",Font.BOLD,20));b1.setForeground(Color.black);b2=new JButton("2");b2.setFont(new Font("2",Font.BOLD,20));b2.setForeground(Color.black);b3=new JButton("3");b3.setFont(new Font("3",Font.BOLD,20));b3.setForeground(Color.black);b4=new JButton("4");b4.setFont(new Font("4",Font.BOLD,20));b4.setForeground(Color.black);b5=new JButton("5");b5.setFont(new Font("5",Font.BOLD,20));b5.setForeground(Color.black);b6=new JButton("6");b6.setFont(new Font("6",Font.BOLD,20));b6.setForeground(Color.black);b7=new JButton("7");b7.setFont(new Font("7",Font.BOLD,20));b7.setForeground(Color.black);b8=new JButton("8");b8.setFont(new Font("8",Font.BOLD,20));b8.setForeground(Color.black);b9=new JButton("9");b9.setFont(new Font("9",Font.BOLD,20));b9.setForeground(Color.black);b0=new JButton("0");b0.setFont(new Font("0",Font.BOLD,20));b0.setForeground(Color.black);bdes=new JButton(".");bdes.setFont(new Font(".",Font.BOLD,20)); bdes.setForeground(Color.black);bf=new JButton("+/-");bf.setFont(new Font("+/-",Font.BOLD,20)); bf.setForeground(Color.red);chengbtn=new JButton("*");chengbtn.setFont(new Font("*",Font.BOLD,20)); chengbtn.setForeground(Color.red);chubtn=new JButton("÷");chubtn.setFont(new Font("÷",Font.BOLD,20)); chubtn.setForeground(Color.red);jiabtn=new JButton("+");jiabtn.setFont(new Font("+",Font.BOLD,20)); jiabtn.setForeground(Color.red);jianbtn=new JButton("-");jianbtn.setFont(new Font("-",Font.BOLD,20));jianbtn.setForeground(Color.red);clearbtn=new JButton("C");clearbtn.setFont(new Font("C",Font.BOLD,20));clearbtn.setForeground(Color.red);clearbtn.addActionListener(new ActionListener()//创建监听器{public void actionPerformed(ActionEvent e){txtinput.setText("");}});sinbtn=new JButton("sin");sinbtn.setFont(new Font("sin",Font.BOLD,15));sinbtn.setForeground(Color.red);cosbtn=new JButton("cos");cosbtn.setFont(new Font("cos",Font.BOLD,15));cosbtn.setForeground(Color.red);sqrtbtn=new JButton("√");sqrtbtn.setFont(new Font("√",Font.BOLD,15));sqrtbtn.setForeground(Color.red);zhishubtn=new JButton("x^y");zhishubtn.setFont(new Font("x^y",Font.BOLD,15)); zhishubtn.setForeground(Color.red);daoshubtn=new JButton("1/x");daoshubtn.setFont(new Font("1/x",Font.BOLD,15)); daoshubtn.setForeground(Color.red);jiechengbtn=new JButton("!");jiechengbtn.setFont(new Font("!",Font.BOLD,20)); jiechengbtn.setForeground(Color.red);equalbtn=new JButton("=");equalbtn.setFont(new Font("=",Font.BOLD,20));equalbtn.setForeground(Color.red);//设置键位分布setLayout(new BorderLayout());txtpanel.add(txtinput);add("North",txtpanel);btnpanel.setLayout(new GridLayout(5,4,1,3));//五行四列分布btnpanel.add(sinbtn);btnpanel.add(cosbtn);btnpanel.add(jiechengbtn);btnpanel.add(clearbtn);btnpanel.add(b1);btnpanel.add(b2);btnpanel.add(b3);btnpanel.add(chubtn);btnpanel.add(b4);btnpanel.add(b5);btnpanel.add(b6);btnpanel.add(chengbtn);btnpanel.add(b7);btnpanel.add(b8);btnpanel.add(b9);btnpanel.add(jianbtn);btnpanel.add(b0);btnpanel.add(bdes);btnpanel.add(bf);btnpanel.add(jiabtn);add("Center",btnpanel);southpanel.setLayout(new GridLayout(1,4,1,3));//一行四列分布southpanel.add(sqrtbtn);southpanel.add(zhishubtn);southpanel.add(daoshubtn);southpanel.add(equalbtn);add("South",southpanel);//监听按键b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);b0.addActionListener(this);bdes.addActionListener(this);bf.addActionListener(this);sinbtn.addActionListener(this);cosbtn.addActionListener(this);jiechengbtn.addActionListener(this); sqrtbtn.addActionListener(this);zhishubtn.addActionListener(this); daoshubtn.addActionListener(this); chengbtn.addActionListener(this);chubtn.addActionListener(this);jiabtn.addActionListener(this);jianbtn.addActionListener(this);equalbtn.addActionListener(this);setSize(280,290);setVisible(true);setLocation(400,200);addWindowListener(new WindowCloser());}class WindowCloser extends WindowAdapter{public void windowClosing(WindowEvent e){ System.exit(0);}}public void actionPerformed(ActionEvent e){Object obj=e.getSource();//设置相关计算方法if(obj==b1)txtinput.setText(txtinput.getText()+"1"); else if(obj==b2)txtinput.setText(txtinput.getText()+"2"); else if(obj==b3)txtinput.setText(txtinput.getText()+"3"); else if(obj==b4)txtinput.setText(txtinput.getText()+"4"); else if(obj==b5)txtinput.setText(txtinput.getText()+"5");else if(obj==b6)txtinput.setText(txtinput.getText()+"6");else if(obj==b7)txtinput.setText(txtinput.getText()+"7");else if(obj==b8)txtinput.setText(txtinput.getText()+"8");else if(obj==b9)txtinput.setText(txtinput.getText()+"9");else if(obj==b0)txtinput.setText(txtinput.getText()+"0");else if(obj==bdes)txtinput.setText(txtinput.getText()+".");else if(obj==bf){sum=Double.valueOf(txtinput.getText()).doubleValue();boolean bool=true;if(bool){result=sum-2*sum;bool=false;}else{result=sum+2*sum;}txtinput.setText(String.valueOf(result));}else if(obj==sinbtn){sum=Double.valueOf(txtinput.getText()).doubleValue();result=Math.sin(sum);txtinput.setText(String.valueOf(result));}else if(obj==cosbtn){sum=Double.valueOf(txtinput.getText()).doubleValue();result=Math.cos(sum);txtinput.setText(String.valueOf(result));}else if(obj==zhishubtn){sum=Double.valueOf(txtinput.getText()).doubleValue();sign="x^y";txtinput.setText("");}else if(obj==daoshubtn){sum=Double.valueOf(txtinput.getText()).doubleValue();result=1/sum;txtinput.setText(String.valueOf(result));//sign="1/x";//txtinput.setText("");}else if(obj==sqrtbtn){sum=Double.valueOf(txtinput.getText()).doubleValue();result=Math.sqrt(sum);txtinput.setText(String.valueOf(result));//sign="√";//txtinput.setText("");}else if(obj==jiechengbtn){int n;n=(int)Double.valueOf(txtinput.getText()).doubleValue();result=fac(n);txtinput.setText(String.valueOf(result));}else if(obj==jiabtn){sum=Double.valueOf(txtinput.getText()).doubleValue();sign="+";txtinput.setText("");}else if(obj==jianbtn){sum=Double.valueOf(txtinput.getText()).doubleValue();sign="-";txtinput.setText("");}else if(obj==chubtn){sum=Double.valueOf(txtinput.getText()).doubleValue();sign="÷";txtinput.setText("");}else if(obj==chengbtn){sum=Double.valueOf(txtinput.getText()).doubleValue();sign="*";txtinput.setText("");}else if(sign=="+"){result=sum+Double.valueOf(txtinput.getText()).doubleValue();txtinput.setText(String.valueOf(result));}else if(sign=="-"){result=sum-Double.valueOf(txtinput.getText()).doubleValue();txtinput.setText(String.valueOf(result));}else if(sign=="÷"){double n;String m="除零错误!";n=Double.valueOf(txtinput.getText()).doubleValue();if(n==0){JOptionPane.showMessageDialog(this,m,"error", JOptionPane.ERROR_MESSAGE);}elseresult=sum/n;txtinput.setText(String.valueOf(result));}else if(sign=="*"){result=sum*Double.valueOf(txtinput.getText()).doubleValue();txtinput.setText(String.valueOf(result));}else if(sign=="x^y"){result=Math.pow(sum,Double.valueOf(txtinput.getText()).doubleValue());txtinput.setText(String.valueOf(result));}else if(sign=="sin"){result=Math.sin(sum);txtinput.setText(String.valueOf(result));}else if(sign=="cos"){result=Math.cos(sum);txtinput.setText(String.valueOf(result));}else if(sign=="!"){int i=(int)Double.valueOf(txtinput.getText()).doubleValue();for(int j=i;j>0;i--){result=j*(j-1);}txtinput.setText(String.valueOf(result));}else if(obj=="√"){;result=Math.sqrt(sum);txtinput.setText(String.valueOf(result));}else if(obj=="1/x"){result=1/sum;txtinput.setText(String.valueOf(result));}}private long fac(int n){long f;if(n==0)f=1;else f=fac(n-1)*n;return f;}public static void main(String args[]){try{UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");}catch(Exception e){}new Calculator();//使用windows显示风格}}三.运行结果实现加、减、乘、除、阶乘、正弦、余弦和指数运算:功能说明:四.总结及体会不足:1.各种计算功能有待增加,可参考电脑自带计算机2.显示界面皮肤单一,可增加多种,以便个人喜好3.未设置计算值的复制和黏贴功能,单位换算功能等等收获:对java的应用,有了一定了解和延伸,对于未来设计相关功能程序有较大帮助。
用java代码写的简易计算器(可以实现基本的加减乘除功能)
⽤java代码写的简易计算器(可以实现基本的加减乘除功能)package A;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.*;public class Calcular3 extends JFrame implements ActionListener,MouseListener{private int m1=0,n=0;//private double m2=0;//运算的数private int flag=0;JFrame f;JPanel p1,p2,p3;JTextField t;JButton b1[]=new JButton[18];String b[]= {"1","2","3","4","5","6","7","8","9","0","清空","退格",".","=","+","-","*","/"};public Calcular3(){f=new JFrame("计算器");t=new JTextField(35);p1=new JPanel();p2=new JPanel();p3=new JPanel();f.setBounds(100, 100, 400, 200);f.add(p1,BorderLayout.NORTH);f.add(p2,BorderLayout.CENTER);f.add(p3,BorderLayout.EAST);p2.setLayout(new GridLayout(5,3));p3.setLayout(new GridLayout(4,1));p1.add(t);for(int i=0;i<14;i++) {b1[i]=new JButton(b[i]);p2.add(b1[i]);b1[i].addActionListener(this);}for(int i=14;i<18;i++) {b1[i]=new JButton(b[i]);p3.add(b1[i]);b1[i].addActionListener(this);}/*for(int i=0;i<18;i++) {b1[i].addActionListener(this);}*/f.setVisible(true);}//实现接⼝的⽅法public void mouseClicked(MouseEvent e) {}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void actionPerformed(ActionEvent e) {String str="";int i;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {if(i==9) {n=n*10;}else {n=n*10+i+1;}str=String.valueOf(n);//整形n转换成字符串strt.setText(str);//显⽰到⽂本框上}}for(i=14;i<18;i++) {//+、-、*、/if(e.getSource()==b1[i]) {//匹配运算符m1=Integer.parseInt(t.getText());if(flag==15) {m2=m1+m2;}else if(flag==16) {m2=m1-m2;}else if(flag==17) {m2=m1*m2;}else if(flag==18) {m2=m1/m2;}else m2=m1;//若⽆连续的运算符运算,保存当前数据到m2 if(i==14) flag=15;else if(i==15) flag=16;else if(i==16) flag=17;else flag=18;str=String.valueOf(b[i]);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据break;//找到匹配数据退出循环}}if(e.getSource()==b1[13]) {//=m1=Integer.parseInt(t.getText());if(flag==15) {m2=m2+m1;}else if(flag==16) {m2=m2-m1;}else if(flag==17) {m2=m2*m1;}else if(flag==18) {m2=m2/m1;}else m2=m1;str=String.valueOf(m2);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据flag=0;//flag还原0,表明没有未处理的运算符}if(e.getSource()==b1[10]) {//各变量变为0 清空m1=0;m2=0;flag=0;n=0;t.setText("0");//显⽰到⽂本框上}if(e.getSource()==b1[11]) {//退格m1=(int)(Double.parseDouble(t.getText())/10);n=m1;str=String.valueOf(m1);t.setText(str);}if(e.getSource()==b1[12]) {//⼩数点m1=Integer.parseInt(t.getText());str=String.valueOf(m1+b[12]);t.setText(str);//显⽰到⽂本框上int j=0;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {j++;m2=Math.pow(0.1, j)*Integer.parseInt(b[i]);str=String.valueOf(m1+m2);t.setText(str);//显⽰到⽂本框上}}}}//主函数public static void main(String[] args) {new Calcular3();}}。
java实现的计算器-WindowBuilder
java实现的计算器-WindowBuilder import java.awt.BorderLayout; import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder; import java.awt.GridBagLayout; import javax.swing.JButton;import java.awt.GridBagConstraints; import java.awt.Insets;import javax.swing.JTextField; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; /**** 简易计算器,只能完成一次运算,不能连续输入,连续计算* @author admin**/public class CalcuatorSimple extends JFrame {private JPanel contentPane;private JTextField textField;private double operand1;//操作数private double operand2;private String operator;//运算符private String express; //表达式/*** Launch the application.*/public static void main(String[] args) { EventQueue.invokeLater(new Runnable() {public void run() {try {CalcuatorSimple frame = new CalcuatorSimple(); frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public CalcuatorSimple() {setResizable(false);setTitle("\u8BA1\u7B97\u5668"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 271, 191);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane);GridBagLayout gbl_contentPane = new GridBagLayout();gbl_contentPane.columnWidths = new int[]{0, 0, 0, 0, 0, 0};gbl_contentPane.rowHeights = new int[]{0, 0, 0, 0, 0, 0};gbl_contentPane.columnWeights = new double[]{1.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};contentPane.setLayout(gbl_contentPane);textField = new JTextField();GridBagConstraints gbc_textField = new GridBagConstraints();gbc_textField.gridwidth = 5;gbc_textField.insets = new Insets(0, 0, 5, 0);gbc_textField.fill = GridBagConstraints.HORIZONTAL;gbc_textField.gridx = 0;gbc_textField.gridy = 0;contentPane.add(textField, gbc_textField);textField.setColumns(10);//初始化成员变量operand1=0;operand2=0;operator = new String("#");express = new String();JButton btnNewButton = new JButton("0");btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "0";InputOperand(express);}});GridBagConstraints gbc_btnNewButton = new GridBagConstraints(); gbc_btnNewButton.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton.gridx = 0;gbc_btnNewButton.gridy = 1;contentPane.add(btnNewButton, gbc_btnNewButton);JButton btnNewButton_1 = new JButton("1");btnNewButton_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "1";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_1 = new GridBagConstraints(); gbc_btnNewButton_1.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_1.gridx = 1;gbc_btnNewButton_1.gridy = 1;contentPane.add(btnNewButton_1, gbc_btnNewButton_1);JButton btnNewButton_2 = new JButton("2");btnNewButton_2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "2";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_2 = new GridBagConstraints(); gbc_btnNewButton_2.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_2.gridx = 2;gbc_btnNewButton_2.gridy = 1;contentPane.add(btnNewButton_2, gbc_btnNewButton_2);JButton btnNewButton_3 = new JButton("3");btnNewButton_3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "3";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_3 = new GridBagConstraints(); gbc_btnNewButton_3.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_3.gridx = 3;gbc_btnNewButton_3.gridy = 1;contentPane.add(btnNewButton_3, gbc_btnNewButton_3);JButton btnNewButton_4 = new JButton("4");btnNewButton_4.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "4";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_4 = new GridBagConstraints(); gbc_btnNewButton_4.insets = new Insets(0, 0, 5, 0);gbc_btnNewButton_4.gridx = 4;gbc_btnNewButton_4.gridy = 1;contentPane.add(btnNewButton_4, gbc_btnNewButton_4);JButton btnNewButton_5 = new JButton("5");btnNewButton_5.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "5";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_5 = new GridBagConstraints(); gbc_btnNewButton_5.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_5.gridx = 0;gbc_btnNewButton_5.gridy = 2;contentPane.add(btnNewButton_5, gbc_btnNewButton_5);JButton btnNewButton_6 = new JButton("6");btnNewButton_6.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "6";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_6 = new GridBagConstraints(); gbc_btnNewButton_6.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_6.gridx = 1;gbc_btnNewButton_6.gridy = 2;contentPane.add(btnNewButton_6, gbc_btnNewButton_6);JButton btnNewButton_7 = new JButton("7");btnNewButton_7.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "7";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_7 = new GridBagConstraints(); gbc_btnNewButton_7.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_7.gridx = 2;gbc_btnNewButton_7.gridy = 2;contentPane.add(btnNewButton_7, gbc_btnNewButton_7);JButton btnNewButton_8 = new JButton("8");btnNewButton_8.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "8";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_8 = new GridBagConstraints(); gbc_btnNewButton_8.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_8.gridx = 3;gbc_btnNewButton_8.gridy = 2;contentPane.add(btnNewButton_8, gbc_btnNewButton_8);JButton btnNewButton_9 = new JButton("9");btnNewButton_9.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "9";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_9 = new GridBagConstraints(); gbc_btnNewButton_9.insets = new Insets(0, 0, 5, 0);gbc_btnNewButton_9.gridx = 4;gbc_btnNewButton_9.gridy = 2;contentPane.add(btnNewButton_9, gbc_btnNewButton_9);JButton btnNewButton_10 = new JButton("+");btnNewButton_10.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {operator = "+";express = "";textField.setText("");}});GridBagConstraints gbc_btnNewButton_10 = new GridBagConstraints(); gbc_btnNewButton_10.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_10.gridx = 0;gbc_btnNewButton_10.gridy = 3;contentPane.add(btnNewButton_10, gbc_btnNewButton_10);JButton btnNewButton_11 = new JButton("-");btnNewButton_11.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {operator = "-";express = "";textField.setText("");}});GridBagConstraints gbc_btnNewButton_11 = new GridBagConstraints(); gbc_btnNewButton_11.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_11.gridx = 1;gbc_btnNewButton_11.gridy = 3;contentPane.add(btnNewButton_11, gbc_btnNewButton_11);JButton btnNewButton_12 = new JButton("*");btnNewButton_12.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {operator = "*";express = "";textField.setText("");}});GridBagConstraints gbc_btnNewButton_12 = new GridBagConstraints(); gbc_btnNewButton_12.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_12.gridx = 2;gbc_btnNewButton_12.gridy = 3;contentPane.add(btnNewButton_12, gbc_btnNewButton_12);JButton btnNewButton_13 = new JButton("/");btnNewButton_13.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {operator = "/";express = "";textField.setText("");}});GridBagConstraints gbc_btnNewButton_13 = new GridBagConstraints(); gbc_btnNewButton_13.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_13.gridx = 3;gbc_btnNewButton_13.gridy = 3;contentPane.add(btnNewButton_13, gbc_btnNewButton_13);JButton btnNewButton_14 = new JButton("%");btnNewButton_14.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {operator = "%";express = "";textField.setText("");}});GridBagConstraints gbc_btnNewButton_14 = new GridBagConstraints(); gbc_btnNewButton_14.insets = new Insets(0, 0, 5, 0);gbc_btnNewButton_14.gridx = 4;gbc_btnNewButton_14.gridy = 3;contentPane.add(btnNewButton_14, gbc_btnNewButton_14);JButton btnNewButton_16 = new JButton(".");btnNewButton_16.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//数字中不含小数点if(!express.contains(".")){express += ".";}}});GridBagConstraints gbc_btnNewButton_16 = new GridBagConstraints();gbc_btnNewButton_16.insets = new Insets(0, 0, 0, 5);gbc_btnNewButton_16.gridx = 0;gbc_btnNewButton_16.gridy = 4;contentPane.add(btnNewButton_16, gbc_btnNewButton_16); JButton btnNewButton_17 = new JButton("="); btnNewButton_17.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {double result=0;if(operator.equals("#")){textField.setText("");}else{if(operator.equals("+"))result = operand1 + operand2;if(operator.equals("-"))result = operand1 - operand2;if(operator.equals("*"))result = operand1 * operand2;if(operator.equals("/"))result = operand1 / operand2;if(operator.equals("%"))result = (int)operand1 % (int)operand2;textField.setText(String.valueOf(result));}ResetAll();}});GridBagConstraints gbc_btnNewButton_17 = new GridBagConstraints(); gbc_btnNewButton_17.insets = new Insets(0, 0, 0, 5);gbc_btnNewButton_17.gridx = 1;gbc_btnNewButton_17.gridy = 4;contentPane.add(btnNewButton_17, gbc_btnNewButton_17);JButton btnNewButton_15 = new JButton("CE");btnNewButton_15.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {ResetAll();textField.setText("");}});GridBagConstraints gbc_btnNewButton_15 = new GridBagConstraints(); gbc_btnNewButton_15.insets = new Insets(0, 0, 0, 5);gbc_btnNewButton_15.gridx = 2;gbc_btnNewButton_15.gridy = 4;contentPane.add(btnNewButton_15, gbc_btnNewButton_15);JButton btnNewButton_18 = new JButton("\u9000\u683C"); btnNewButton_18.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if(express.length()==0 || express.equals("")){ResetAll();textField.setText("");}if(express.length()>0){express = express.substring(0, express.length()-1);textField.setText(express);try{if(operator.equals("#")){operand1 = Double.parseDouble(express);}else{operand2 = Double.parseDouble(express);}}catch(NumberFormatException ep){System.out.println(ep.getMessage());}}}});GridBagConstraints gbc_btnNewButton_18 = new GridBagConstraints(); gbc_btnNewButton_18.gridwidth = 2;gbc_btnNewButton_18.insets = new Insets(0, 0, 0, 5);gbc_btnNewButton_18.gridx = 3;gbc_btnNewButton_18.gridy = 4;contentPane.add(btnNewButton_18, gbc_btnNewButton_18);}//鼠标单击输入数字,给某个操作数变量public void InputOperand(String datastr){ double m=0;try{m = Double.parseDouble(datastr);}catch(NumberFormatException ep){ System.out.println(ep.getMessage());}if(operator.equals("#")){operand1 = m;}else{operand2 = m;}textField.setText(String.valueOf(m));}//完成一次计算后,清空操作数public void ResetAll(){operand1=0;operand2=0;operator="#";express="";}}。
java实现计算器
JA V A程序设计课程设计班级:计算机09-1班姓名:姜浩学号:0901051705一、设计题目参考Windows附件中的计算器,使用Java语言设计并实现一个简单的计算器。
(界面使用A WT或SWING)二、实现功能该计算器可以实现人们计算所需要的基本要求,如基本操作:加、减、乘、除,经常用到的三角函数:sin,cos,tan,以及某些运算需要的求平方,开方,求倒数,求log数,求阶乘n!。
具体功能描述如下:1、加减乘数运算:通过计算器界面可以输入要求的两个数,通过“+”“—”“*”“/”按键可以实现两个数的加减乘除,代码如下:public void count(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;mid=false;}else{result+=0;}text.setText(Double.toString(result));}}2、三角函数运算:通过计算器界面输入要求三角函数的数值,然后通过“sin”“cos”“tan”按键可以实现求这个数的对应的三角函数值,实现代码如下:if(thisCommand.equals("tan")){result=Math.tan(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}if(thisCommand.equals("sin")){result=Math.sin(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}if(thisCommand.equals("cos")){result=Math.cos(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}3、求平方,开方操作:通过计算器界面输入一个数,按键“sqar”“sqrt”可实现该数的平方和开方操作,实现代码如下:if(thisCommand.equals("sqar")){result=Double.parseDouble(text.getText())*Double.parseDouble(text.getTe xt());text.setText(Double.toString(result));}if(thisCommand.equals("sqrt")){double t;t=Double.parseDouble(text.getText());if(t<0)text.setText("根号下不能小于0");else{result=Math.sqrt(Double.parseDouble(text.getText()));text.setText(Double.toString(result));}}4、求倒数,ln,阶乘n!操作:通过计算器界面输入一个数,按键“1/x”“ln”“n!”可实现求该数的倒数和ln值的操作,实现代码如下:if(thisCommand.equals("1/x")){double t;t=Double.parseDouble(text.getText());if(t==0)text.setText("除数不能为0");else{result=1/Double.parseDouble(text.getText());text.setText(Double.toString(result));}}if(thisCommand.equals("ln")){double t;t=Double.parseDouble(text.getText());if(t<=0)text.setText("ln下的数不能为小于等于0");else{result=Math.log(Double.parseDouble(text.getText()));text.setText(Double.toString(result));}}if(thisCommand.equals("n!")){if(Double.parseDouble(text.getText())==0){result=1;}else{result=1;double t=Double.parseDouble(text.getText());for(int i=0;i<Double.parseDouble(text.getText());i++){result=result*t;t=t-1;}text.setText(Double.toString(result));}}三、系统的UML类图四、系统实现的核心代码import java.awt.*;import javax.swing.*;import java.awt.event.*;public class calculator {public static void main(String[] args){calculatorJFrame frame=new calculatorJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setV isible(true);}}class calculatorJFrame extends JFrame{private JTextField text;public calculatorJFrame(){setTitle("标准计算器");setSize(320,220);Container contentPane=getContentPane();text=new JTextField();contentPane.add("Center",text);calculatorJPanel jp=new calculatorJPanel(text);contentPane.add("South",jp);}}class calculatorJPanel extends JPanel{private JTextField text;private boolean start;private boolean mid;private String lastCommand;private String thisCommand;private double result;public calculatorJPanel(JTextField text1){text=text1;this.setLayout(new GridLayout(5,5));result=0;start=true;mid=true;lastCommand="=";ActionListener insert=new InsertAction();ActionListener command=new CommandAction();JButtonadd("C",command);JButtonadd("n!",command);JButtonadd("1/x",command);JButtonadd("sqar",command);JButtonadd("ln",command);for(int i=0;i<3;i++)JButtonadd(Integer.toString(i+7),insert);JButtonadd("+",command);JButtonadd("sin",command);for(int i=0;i<3;i++)JButtonadd(Integer.toString(i+4),insert);JButtonadd("-",command);JButtonadd("cos",command);for(int i=0;i<3;i++)JButtonadd(Integer.toString(i+1),insert);JButtonadd("*",command);JButtonadd("tan",command);JButtonadd("0",insert);JButtonadd(".",insert);JButtonadd("sqrt",command);JButtonadd("/",command);JButtonadd("=",command);}public void JButtonadd(String number,ActionListener Action) {JButton jb=new JButton(number);jb.addActionListener(Action);this.add(jb);}private class InsertAction implements ActionListener{public void actionPerformed(ActionEvent event){String input=event.getActionCommand();if(start){text.setText("");start=false;}text.setText(text.getText()+input);}}private class CommandAction implements ActionListener {public void actionPerformed(ActionEvent evt){String command=evt.getActionCommand();thisCommand=command;if(thisCommand.equals("C")){result =0;text.setText(Double.toString(result));lastCommand="";}if(thisCommand.equals("n!")){if(Double.parseDouble(text.getText())==0){result=1;}else{result=1;double t=Double.parseDouble(text.getText());for(int i=0;i<Double.parseDouble(text.getText());i++){result=result*t;t=t-1;}text.setText(Double.toString(result));}}if(thisCommand.equals("1/x")){double t;t=Double.parseDouble(text.getText());if(t==0)text.setText("除数不能为0");else{result=1/Double.parseDouble(text.getText());text.setText(Double.toString(result));}}if(thisCommand.equals("sqar")){result=Double.parseDouble(text.getText())*Double.parseDouble(text.getText());text.setText(Double.toString(result));}if(thisCommand.equals("ln")){double t;t=Double.parseDouble(text.getText());if(t<=0)text.setText("ln下的数不能为小于等于0");else{result=Math.log(Double.parseDouble(text.getText()));text.setText(Double.toString(result));}}if(thisCommand.equals("tan")){result=Math.tan(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}if(thisCommand.equals("sqrt")){double t;t=Double.parseDouble(text.getText());if(t<0)text.setText("根号下不能小于0");else{result=Math.sqrt(Double.parseDouble(text.getText()));text.setText(Double.toString(result));}}if(thisCommand.equals("sin")){result=Math.sin(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}if(thisCommand.equals("cos")){result=Math.cos(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}if(start&&mid){if(command.equals("-")){text.setText(command);start=false;}elselastCommand=command;}else{count(Double.parseDouble(text.getText()));if(command.equals("C")){mid=true;lastCommand="=";}else if(command.equals("back"))lastCommand="=";elselastCommand=command;start=true;}}}public void count(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;mid=false;}else{result+=0;}text.setText(Double.toString(result));}}。
java 计算器 (模仿windows自带计算器的功能和界面)
java 计算器(模仿windows自带计算器的功能和界面)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.JPanel;import javax.swing.JTextField;/**•一个计算器,与Windows附件自带计算器的标准版功能、界面相仿。
但还不支持键盘操作。
•/•public class Calculator extends JFrame implements ActionListener { • /** 计算器上的键的显示名字/• private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",•••"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };/计算器上的功能键的显示名字 */private final String[] COMMAND = { "Backspace", "CE", "C" };/计算器左边的M的显示名字/private final String[] M = { " ", "MC", "MR", "MS", "M+" };/** 计算器上键的按钮/private JButton keys[] = new JButton[KEYS.length];/计算器上的功能键的按钮 */private JButton commands[] = new JButton[COMMAND.length];/计算器左边的M的按钮/private JButton m[] = new JButton[M.length];/** 计算结果文本框/private JTextField resultText = new JTextField("0");// 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字 private boolean firstDigit = true;// 计算的中间结果。
Java语言编写的标准计算器(实现了windows标准型计算器的全部功能)
标准型计算器(Java语言编写)下面的java源码是本人连续工作48小时的成果,也许对于高手来说这只是小菜一碟,但是如果你不是高手,我推荐你研究下面的程序。
程序中包含了Java反射机制、图形界面编程等一系列的知识运用。
研究完后你不一定会变成高手,但对于Java和C语言你都会有更深度的理解。
源码中的注释很详细。
○1建立java工程○2输入工程名○3新建一个包○4输入包名○5新建一个类○6输入类名以上步骤都是基础,会的可以略过。
源码:package three.num1;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Calculator extends JFrame implements ActionListener { /****/private static final long serialVersionUID = 1L;private JTextField text1;// 未实例化private JLabel lable_text;private JButton bt_backspace, bt_ce, bt_c;private JPanel gridpanel;private String str = "";private String str_note = " ";private char operator = '\0';private double data_before;private boolean equal_flag = false;public Calculator() {super("计算器");// 标题栏setBounds(100, 100, 198, 244); // 程序在屏幕上的显示位置(100,100),宽*高=300*233this.setResizable(false);this.getContentPane().setLayout(newFlowLayout(FlowLayout.RIGHT));lable_text = new JLabel(" ", JLabel.RIGHT);this.getContentPane().add(lable_text);text1 = new JTextField("0", 16); // 将文本框text1实例化,并设置文本框的长度text1.setHorizontalAlignment(JTextField.RIGHT); // 文字在文本框中从右边开始显示text1.setEditable(false); // 不可编辑this.getContentPane().add(text1);bt_backspace = new JButton("backspace");bt_backspace.setMargin(new Insets(2, 5, 2, 6));bt_ce = new JButton("CE"); // bt_ce.setMargin(newInsets(2,2,2,2));bt_c= new JButton("C"); // bt_c.setMargin(new Insets(2,2,2,2));this.getContentPane().add(bt_backspace);this.getContentPane().add(bt_ce);this.getContentPane().add(bt_c);bt_backspace.addActionListener(this);bt_ce.addActionListener(this);bt_c.addActionListener(this);keyboard(); // 调用keyboard()this.setVisible(true);}/*** 添加按钮 ***/public void keyboard() {String str[] = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%","1", "2", "3", "-", "1/X", "0", "+/-", ".", "+", "=" };gridpanel = new JPanel();gridpanel.setLayout(new GridLayout(4, 5, 9, 8));// 4行5列,水平间距9,垂直间距7this.getContentPane().add(gridpanel);JButton button[] = new JButton[str.length];for (int i = 0; i < button.length; i++) {button[i] = new JButton(str[i]);button[i].setMargin(new Insets(0, 0, 0, 0));button[i].setForeground(new Color(252, 51, 51));//button[i].setBackground(new//Color(131,95,56));gridpanel.add(button[i]);button[i].addActionListener(this); // 为按钮注册单击事件监听器}}/*** 实现监听器接口 ***/public void actionPerformed(ActionEvent e) {double data_after;String bt = e.getActionCommand();/*** 按0数字键 */if (bt == "0")// bt.equals("0"){if (equal_flag == false) {if (text1.getText().equals("0")) {return;} else {str += bt;text1.setText(str);}} else {equal_flag= false; // 添加这行代码使下次按数字键从if行执行,否则每次按0键都执行本行else语句,即str清空。
java编写的简单的计算器程序
j a v a编写的简单的计算器程序-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN计算器项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。
项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动;1.Applet容器中组件的添加与设置,包括面板以及菜单的使用;2.容器中组件的布局管理;3.Java核心包中数组、数学计算类的使用;4.异常的处理;5.事件处理模型中的三类对象的使用:1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。
2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。
3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。
6.程序中事件处理的流程:1.计算流程的细化参考代码:import .*;import .*;import .*;importimportimportpublic class Calculatorimplements ActionListener { #############"); dd(panel);panel1 = new JPanel();panel2 = new JPanel();(new BorderLayout());键入计算的第一个数字。
\n");("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。
\n"); ("3. 键入计算的下一个数字。
\n");("4. 输入所有剩余的运算符和数字。
\n");("5. 单击“=”。
用Java实现的计算器
用Java实现的计算器计算器是一个广泛应用的工具,用于进行数学运算。
如今,随着计算机技术的不断发展,计算器也逐渐被软件程序所替代。
本文将介绍如何使用Java语言实现一个简单的计算器程序。
一、程序概述计算器程序主要包括用户界面和计算逻辑两部分。
用户界面负责显示计算器的按钮和输入输出框,计算逻辑负责根据用户输入进行运算并返回结果。
二、用户界面设计在Java中,我们可以使用Swing或JavaFX等图形库来设计用户界面。
本文选用JavaFX来实现计算器的界面。
界面需要包括数字按钮、运算符按钮、输入输出框等组件。
在程序启动时,我们需要初始化界面并设置各个组件的位置、大小和样式。
为了方便布局,我们可以使用GridPane等布局管理器来管理组件。
三、计算逻辑实现1. 表达式解析计算器需要将用户输入的表达式解析为计算机可以识别的格式。
Java中可以使用正则表达式或者逆波兰表达式来解析表达式。
本文选用简单的正则表达式方法进行解析。
2. 运算逻辑解析表达式后,我们需要根据运算符的优先级进行运算。
Java中可以使用栈来实现运算符的优先级判断和运算。
我们可以定义一个操作数栈和一个运算符栈,按照规则将表达式中的数字和运算符依次入栈,并根据运算符的优先级进行运算并将结果入栈。
四、完整代码示例import javafx.application.Application;import javafx.geometry.Insets;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.TextField;import yout.GridPane;import javafx.stage.Stage;public class Calculator extends Application {private TextField inputField; // 输入框private Button[] numberButtons; // 数字按钮private Button[] operatorButtons; // 运算符按钮@Overridepublic void start(Stage primaryStage) {primaryStage.setTitle("计算器");primaryStage.setResizable(false);// 初始化界面GridPane gridPane = new GridPane();gridPane.setHgap(10);gridPane.setVgap(10);gridPane.setPadding(new Insets(10));// 初始化输入框inputField = new TextField();inputField.setEditable(false);inputField.setPrefHeight(40);inputField.setMaxWidth(Double.MAX_VALUE);gridPane.add(inputField, 0, 0, 4, 1);// 初始化数字按钮numberButtons = new Button[10];for (int i = 0; i < 10; i++) {numberButtons[i] = createNumberButton(String.valueOf(i), i); }gridPane.add(numberButtons[7], 0, 1);gridPane.add(numberButtons[9], 2, 1);gridPane.add(numberButtons[4], 0, 2);gridPane.add(numberButtons[5], 1, 2);gridPane.add(numberButtons[6], 2, 2);gridPane.add(numberButtons[1], 0, 3);gridPane.add(numberButtons[2], 1, 3);gridPane.add(numberButtons[3], 2, 3);gridPane.add(numberButtons[0], 0, 4);gridPane.add(createDotButton(), 1, 4);gridPane.add(createEqualButton(), 2, 4);// 初始化运算符按钮operatorButtons = new Button[4];operatorButtons[0] = createOperatorButton("+"); operatorButtons[1] = createOperatorButton("-"); operatorButtons[2] = createOperatorButton("*"); operatorButtons[3] = createOperatorButton("/"); gridPane.add(operatorButtons[0], 3, 1);gridPane.add(operatorButtons[1], 3, 2);gridPane.add(operatorButtons[3], 3, 4);Scene scene = new Scene(gridPane);primaryStage.setScene(scene);primaryStage.show();}private Button createNumberButton(String text, int number) { Button button = new Button(text);button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + number);});return button;}private Button createDotButton() {Button button = new Button(".");button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + ".");});return button;}private Button createEqualButton() {Button button = new Button("=");button.setPrefSize(60, 40);button.setOnAction(e -> {String expression = inputField.getText();// 调用计算逻辑进行计算if (expression != null && !expression.isEmpty()) { double result = calculate(expression);inputField.setText(String.valueOf(result));}});return button;}private Button createOperatorButton(String text) {Button button = new Button(text);button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + text);});return button;}private double calculate(String expression) {// 进行计算逻辑的实现// ...}public static void main(String[] args) {launch(args);}}五、总结通过本文的介绍,我们可以了解到使用Java语言实现一个简单计算器的基本框架和思路。
