java计算100到110阶乘 (100个java经典编程实例)

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

java100个常用函数,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#34;))
		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();
	}
}

专注于技术热点大数据,人工智能,JAVA、Python、 C 、GO、Javascript等语言最新前言技术,及业务痛点问题分析,请关注【编程我最懂】共同交流学习。