Java实现一个简单计算器

网友投稿 280 2022-09-05


Java实现一个简单计算器

先来看看界面效果:

源码如下:

package test1;

import java.awt.Frame;

import java.awt.TextField;

import java.awt.Button;

import java.awt.Panel;

import java.awt.GridLayout;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class caLfSABwbslculate {

TextField tfResult;

Button btNum[],btOper[],btPoint,btEqual,btBack,btSqrt,btPingfang,btLifang;

int num1,num2;//操作数

char oper;//操作符

boolean isNum;//代表数字标志位

public void init(){

Frame f;

tfResult=new TextField();

btNum=new Button[10];//数组对象

for(int i=0;i<=9;i++){

btNum[i]=new Button(i+"");

}

btOper=new Button[4];

btOper[0]=new Button("+");

btOper[1]=new Button("-");

btOper[2]=new Button("*");

btOper[3]=new Button("/");

btPoint=new Button(".");

btEqual=new Button("=");

btBack=new Button("Backspace");

btSqrt=new Button("Sqrt");

btPingfang=new Button("2");

btLifang=new Button("3");

f=new Frame("小羊羔的计算器!");

f.setSize(300,300);

//放置组件

f.add(tfResult,"North");

Panel panel=new Panel();

f.add(panel,"Center");

GridLayout gl=new GridLayout(5,4);

panel.setLayout(gl);

panel.add(btNum[1]);

panel.add(btNum[2]);

panel.add(btNum[3]);

panel.add(btOper[0]);

panel.add(btNum[4]);

panel.add(btNum[5]);

panel.add(btNum[6]);

panel.add(btOper[1]);

panel.add(btNum[7]);

panel.add(btNum[8]);

panel.add(btNum[9]);

panel.add(btOper[2]);

panel.add(btNum[0]);

panel.add(btPoint);

panel.add(btEqual);

panel.add(btOper[3]);

panel.add(btBack);

panel.add(btSqrt);

panel.add(btPingfang);

panel.add(btLifang);

f.setVisible(true);

//注册监听

f.addWindowListener(new MyWinLis());

//数字按钮注册监听

MyNumLis mnl=new MyNumLis();

for(int i=0;i<=9;i++)

btNum[i].addActionListener(mnl);

//操作符按钮注册监听

MyOperLis mol=new MyOperLis();

for(int j=0;j<=3;j++)

btOper[j].addActionListener(mol);

//等号按钮注册监听

MyEqualLis mel=new MyEqualLis();

btEqual.addActionListener(mel);

//删除按钮注册监听

MyBackLis mbl=new MyBackLis();

btBack.addActionListener(mbl);

//开根号按钮注册监听

MySqrtLis msl=new MySqrtLis();

btSqrt.addActionListener(msl);

//平方按钮注册监听

MyPingfangLis mpl=new MyPingfangLis();

btPingfang.addActionListener(mpl);

//百分号注册监听

MyLifangLis mll=new MyLifangLis();

btLifang.addActionListener(mll);

}

//定义监听器类

class MyNumLis implements ActionListener{

public void actionPerformed(ActionEvent e){

String t=e.getActionCommand();

String s=tfResult.getText();

if(isNum==false)

tfResult.setText(t);

else

tfResult.setText(s+t);

isNum=true;

}

}

class MySqrtLis implements ActionListener{

public void actionPerformed(ActionEvent e){

double t=Double.parseDouble(tfResult.getText());

tfResult.setText(Math.sqrt(t)+"");

isNum=false;

}

}

class MyPingfangLis implements ActionListener{

public void actionPerformed(ActionEvent e){

num1=Integer.parseInt(tfResult.getText());

tfResult.setText(num1*num1+"");

}

}

class MyLifangLis implements ActionListener{

public void actionPerformed(ActionEvent e){

num1=Integer.parseInt(tfResult.getText());

tfResult.LfSABwbssetText(num1*num1*num1+"");

}

}

class MyOperLis implements ActionListener{

public void actionPerformed(ActionEvent e){

num1=Integer.parseInt(tfResult.getText());//转化为INT

oper=e.getActionCommand().charAt(0);

isNum=false;

}

}

class MyEqualLis implements ActionListener{

public void actionPerformed(ActionEvent e){

int result=0;

isNum=false;

num2=Integer.parseInt(tfResult.getText());

switch(oper){

case '+':result=num1+num2;break;

case '-':result=num1-num2;break;

case '*':result=num1*num2;break;

case '/':result=num1/num2;break;

}

tfResult.setText(result+"");

}

}

class MyBackLis implements ActionListener{

public void actionPerformed(ActionEvent e){

tfResult.setText("");

isNum=false;

}

}

class MyWinLis extends WindowAdapter{

public void windowClosing(WindowEvent e){

e.getWindow().setVisible(false);

e.getWindow().dispose();

System.exit(0);

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

new calculate().init();

}

}

11×5=?界面如下:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【DELM分类】基于人工蜂群算法改进深度学习极限学习机实现数据分类附matlab代码
下一篇:Python常用命令(Python常用命令)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~