您的位置 首页 java

100行内JAVA经典实现最优计算器

前几天有网友问我如何用100行以内代码实现计算器,今天【编程我最懂】实现了这个计算器,贡献给大家,愿大家喜欢:

源码示例:

 import  JAVA .awt.BorderLayout;
import java.awt.GridLayout;
import java.math.BigDecimal;
import javax. swing .JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.event.*;

public class TestComputer implements ActionListener{
private boolean append =  false ;//数字处于替换状态
JTextField jtf = new JTextField(10);
private String operator = "+";
private String op1 = "0";
public void actionPerformed(ActionEvent ae){
String comm = ae.getActionCommand();
//如何comm是数字键??
//if("0".equals(comm)||"1".equals(comm)...)
//if(comm.matches("^\d$"))
if("0123456789".indexOf(comm)!=-1){
if(append){//追加
String  temp  = jtf. getText ();
jtf.setText(temp+comm);
}else{//替换
jtf.setText(comm);
append = true;
}
}else if("+-*/".indexOf(comm)!=-1){
op1 = jtf.getText();
 operator  = comm;
append = false;
}else if("=".equals(comm)){
String op2 = jtf.getText();
BigDecimal d1 = new BigDecimal(op1);
BigDecimal d2 = new BigDecimal(op2);
if("+".equals(operator)){
d1 = d1.add(d2);
}else if("-".equals(operator)){
d1 = d1.subtract(d2);
}else if("*".equals(operator)){
d1 = d1.multiply(d2);
}else{
d1 = d1.divide(d2,10,BigDecimal.ROUND_HALF_UP);
}
jtf.setText(d1.toString());
append = false;
}else if(".".equals(comm)){
String temp = jtf.getText();
if(temp.indexOf(comm)==-1){//没有找到
jtf.setText(temp+".");
append = true;
}
}else if("+/-".equals(comm)){
String temp = jtf.getText();
if(temp.startsWith("-")){
jtf.setText(temp.substring(1));
}else{
jtf.setText("-"+temp);
}
}else if("Back".equals(comm)){
String temp = jtf.getText();
if(temp.length()>0){
    jtf.setText(temp.substring(0,temp.length()-1));
}
}else if("CE".equals(comm)||"C".equals(comm)){
jtf.setText("0");
}
}
public TestComputer(){
JFrame jf = new JFrame("计算器");
JPanel jp = new JPanel();
String[] lab = {"Back","CE","C","+","7",
"8","9","-","4","5","6","*","1","2",
"3","/","0",".","+/-","="};
jp.setLayout(new GridLayout(5,4));
jtf.setEditable(false);//文本框不可编辑
JButton[] jb = new JButton[lab.length];
jf.add(jtf,BorderLayout.NORTH);
for(int i=0;i<jb.length;i++){
jb[i] = new JButton(lab[i]);
jp.add(jb[i]);
jb[i].addActionListener(this);
}
jf.add(jp);
jf.setSize(300, 200);//窗口大小
jf.setLocation(350, 250);//设置窗口出现位置
jf.setResizable(false);
jf.setVisible(true);//窗口可见
jf.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestComputer();
}
}  

文章来源:智云一二三科技

文章标题:100行内JAVA经典实现最优计算器

文章地址:https://www.zhihuclub.com/188986.shtml

关于作者: 智云科技

热门文章

网站地图