java 调用 计算器_【Java】使用swing实现简易计算器

这个计算器简单实现了加减乘除功能,平方、开根等额外功能可以自己再增加,每次输出只能计算一个等式,即只能计算2个操作数。

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

public class Calculator {

public static void main(String[] args) {

CalcuFrame f = new CalcuFrame("【小氢计算器】");

}

}

class CalcuFrame extends JFrame implements java.awt.event.ActionListener{

JTextField input;

JButton[] btn = new JButton[16];

JButton ACBtn = new JButton("清空");

String[] name = {"7","8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "+", "0", ".", "=", "-"};

public CalcuFrame(String str) {

JPanel pNorth = new JPanel();

JPanel pCenter=new JPanel();

input = new JTextField("", 20);

ACBtn.addActionListener(this);

//将文本框与清空按钮加入pNorth

ACBtn.setForeground(Color.RED);

pNorth.add(input);

pNorth.add(ACBtn, BorderLayout.EAST);

//将数字、操作符按钮加入pCenter

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

btn[i] = new JButton(name[i]);

btn[i].setForeground(Color.BLUE);

if(i == 3 || i == 7 || i == 11 || i == 15) btn[i].setForeground(Color.GREEN);

//btn[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED));

pCenter.add(btn[i]);

btn[i].addActionListener(this); //添加事件监听器

}

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

//将pNorth、pCenter加入CalcuFrame

add(pNorth, BorderLayout.NORTH);

add(pCenter, BorderLayout.CENTER);

//设置CalcuFrame的样式

setTitle(str);

setBounds(150,150,300,180);

setVisible(true);

validate();

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

public void actionPerformed(ActionEvent e) {

JButton b = (JButton)e.getSource(); //得到当前的按钮对象

String s = b.getText(); //得到按钮对象上的标识字符

if(s.equals("=")){ //如果是等号按钮,解析字符串并计算然后把结果显示在文本输入框

String res = parseString(input.getText());

if(res != null)

{

input.setText(res);

}

return;

}

if(b == ACBtn){ //如果按下了清除按钮,则文本输入框清除为空

input.setText("");

return;

}

//如果是其他按钮(数字按钮或运算符号按钮)则把数字或运算符显示在文本框中

String sTemp = input.getText();

sTemp = sTemp + b.getText();

input.setText(sTemp);

}

public String parseString(String s){

String op1,op2;

double o1,o2,re = 0;

int p=s.indexOf('+'); //查找加号位置,如果找到(if(p!=-1))则取加号前面子串为操作数1,取加号后面子串为操作数2,

// 转换操作数1和操作数2为浮点类型,并进行加法运算,最后把结果返回

if(p == -1) p= s.indexOf('-');//查找减号号位置,.....(处理类同与加号)

if(p == -1) p= s.indexOf('*');//查找乘号号位置,.....(处理类同与加号)

if(p == -1) p= s.indexOf('/');//查找除号号位置,.....(处理类同与加号)

if(p == -1) return "输入有误!";

op1 = s.substring(0, p);

op2 = s.substring(p+1);

o1 = Double.parseDouble(op1);

o2 = Double.parseDouble(op2);

char c = s.charAt(p);

if(c == '+') re = o1 + o2;

else if(c == '-') re = o1 - o2;

else if(c == '*') re = o1 * o2;

else if(c == '/') {

if(o2 == 0) return "输入有误!";

else re = o1 / o2;

}

return String.valueOf(re);

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值