JAVA---最简单的计算器

import java.awt.Button;
import java.awt.Choice;
import java.awt.FlowLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;

import org.omg.CORBA.PUBLIC_MEMBER;

public class Hello { 
	   /* 创建窗体结构
	   * 1,三个文本
	   * 2,一个等号的button
	   * 3,一个可供选择的滑动
	   */
	  TextField textfield1 = new TextField(10);
	  TextField textfield2 = new TextField(10);
	  TextField textfield3 = new TextField(10);
	 
	  Button button = new Button("=");
	  Choice list = new Choice();

	public static void main(String[] args) {
        new Hello().start();
	}
	private void start() {
		//滑动组件添加
		list.add("+");
		list.add("-");
		list.add("*");
		list.add("/");
		
		//为button设置监听,内部类
		button.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				//获取文本内容
		        String op1 = textfield1.getText();
		        String op2 = textfield2.getText();
		        Double number1,number2,number3 = null;
		        //判断是输入是数字格式是否正确
		        try {
		        	 number1 = Double.valueOf(op1);
		        	 number2 = Double.valueOf(op2);
		        }catch (NumberFormatException e1) {
					textfield3.setText("输入格式错误");
					return ;
				}
		        String st = list.getSelectedItem();
		        switch (st) {
				case "+":
					number3 = number1 + number2 ;
					break;
				case "-":
					number3 = number1 - number2;
					break;
				case "*":
					number3 = number1 * number2;
					break;
				case "/":
					number3 = number1/number2;
					break;
				default:
					break;
				}
				textfield3.setText(number3+"");
				textfield2.setText("");
				textfield1.setText("");
			}
		});
		//创建一个容器,设置大小和位子,以及布局
		JFrame jframe = new JFrame("简单的计算器:");
		jframe.setBounds(250, 250, 400, 400);
		jframe.setLayout(new FlowLayout());
		//按照布局,以次添加组件
		jframe.add(textfield1);
		jframe.add(list);
		jframe.add(textfield2);
		jframe.add(button);
		jframe.add(textfield3);
		jframe.setVisible(true);
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

结果展示:



一个java编译的最简单计算器 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class jisuan extends JFrame implements ActionListener{ /** * */ private static final long serialVersionUID = 5823423246304135749L; JPanel cp=new JPanel(); JPanel cp1=new JPanel(); Double nu1,nu2; ImageIcon ii=new ImageIcon("images/2_marcblue.jpg"); JPanel cp2=new JPanel(); JLabel jl=new JLabel(); String[] Jlabel = {"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};//声明标签数组label1存放按钮上的标签 JButton[] b; JButton h=new JButton("c"); //private JButton buttonWithTitle=new JButton("Button with Title",new ImageIcon("src/anwendung/tree.jpg")); private JButton c=new JButton("后退",ii); JButton pf=new JButton("x^y"); int j=0,n=0,a=0,g=0; //Button[] b=new Button[10]; //JTextArea jt=new JTextArea(1,34); JTextField jt=new JTextField("0",30); //JLabel jt=new JLabel(); String st,st1,st2; Boolean t=true; public jisuan(){ setTitle("计算器"); setSize(220,220); //this.setbackgroundImage = new ImageIcon("images/6.21.bmp"); cp=(JPanel)this.getContentPane(); //this.setExtendedState(HIDE_ON_CLOSE); this.setUndecorated(false); this.setResizable(false);//窗口固定不变。 //cp.setEnabled(false); this.addWindowListener(new WindowAdapter(){//给窗口f添窗口事件监听器 public void windowClosing(WindowEvent eve){ System.exit(0); } }); cp.setLayout(new BorderLayout()); cp.add(jt,BorderLayout.NORTH); cp.add(cp1,BorderLayout.CENTER); //cp.add(cp2,BorderLayout.SOUTH); //cp1.setLayout(new GridLayout(3,4)); cp1.setLayout(null); //cp.add(jt); jt.setHorizontalAlignment(JTextField.RIGHT);//右边显示。 jt.setFont(new Font("Serif",Font.BOLD|Font.ITALIC,15));//设置字体的大小和显示方式; jt.setBackground(Color.white);//背景白色 jt.setEditable(false); //jt.setEnabled(true); b = new JButton[Jlabel.length]; for(int i=0;i<b.length;i++)//利用for循环把标签放在按钮上,使每个按钮添事件监听器,在面板p1上添上16个按钮 { b[i] = new JButton(Jlabel[i]); b[i].setSize(45, 25); b[i].setLocation(10+50*(i%4),10+30*(i/4));//把标签依次放在16个按钮上 b[i].addActionListener( this);//使每个按钮添动作事件监听器 cp1.add(b[i]); //分别将按钮添到面板p1上 } h.setSize(45,25); h.setLocation(10,130); h.addActionListener(this); cp1.add(h); // c.setSize(70,25); // c.setLocation(135, 130); // c.setIcon(ii); c.setBounds(135,130,70,25 ); c.setFont(new Font("a",Font.BOLD,10));//设置字体的大小和显示方式; c.addActionListener(this); cp1.add(c); pf.setSize(70,25); pf.setLocation(60, 130); pf.addActionListener(this); cp1.add(pf); //cp.add(new Button("2").addActionListener(new ActionListener(){})); } @Override public void actionPerformed(ActionEvent e) { if("0,1,2,3,4,5,6,7,8,9".indexOf(e.getActionCommand())!=-1){ if(j==0||g==1){//判断是否第一次输入或者运算符后输入; if("0".equals(e.getActionCommand())) jt.setText("0"); else {jt.setText(e.getActionCommand());j=1;} g=0; } else{ st = jt.getText(); jt.setText(st+e.getActionCommand());} } else if("c".equals(e.getActionCommand())){ jt.setText("0"); j=0;a=0;n=0;g=0; } else if("后退".equals(e.getActionCommand())){ st=jt.getText(); /*String r=new String(30); for(int i=0;i<st.length()-1;i++){ String t=String.valueOf(st.charAt(i)); r.concat(t); System.out.println(r); }*/ if(st.length()==1){ jt.setText("0"); j=0;a=0;n=0;g=0; } else{ if(".".equals(String.valueOf(st.charAt(st.length()-1)))){ n=0; System.out.println(n); } String r; n=0; r=st.substring(0, st.length()-1); jt.setText(r); //System.out.println(".".equals(String.valueOf(st.charAt(st.length()-1)))); } } else if(".".equals(e.getActionCommand())){ System.out.println(n); if(n==0&&g==0){ st = jt.getText(); jt.setText(st+e.getActionCommand()); n=1;j=1; } else{ jt.setText("0"); j=0;a=0;n=0;g=0; } } else if("+,-,*,/".indexOf(e.getActionCommand())!=-1){ if(j==1&&"0.".equals(jt.getText())!=true){ if(a==0){//判断是否第一次输入运算符; nu1=Double.parseDouble(jt.getText()); j=0; st=st1=e.getActionCommand(); a=1; } else { nu2=Double.parseDouble(jt.getText()); if(st1.equals("+")){ nu1=nu1+nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("-")){ nu1=nu1-nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("*")){ nu1=nu1*nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("/")){ nu1=nu1/nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("x^y")){ Double num=nu1; int nu=Integer.parseInt(String.valueOf(nu2)); while(nu>1){ nu1=nu1*num;nu--;} jt.setText(String.valueOf(nu1)); } j=0; st1=e.getActionCommand(); } } else{ st1=e.getActionCommand(); jt.setText("0"); j=0;a=0;n=0;g=0; } t=false; } else if("=".equals(e.getActionCommand())){ if("=".equals(String.valueOf(st.charAt(st.length()-1)))) a=1; else nu2=Double.parseDouble(jt.getText()); System.out.println(nu2); if(a==1){ //nu2=Double.parseDouble(st); if(st1.equals("+")){ nu1=nu1+nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("-")){ nu1=nu1-nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("*")){ nu1=nu1*nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("/")){ nu1=nu1/nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("x^y")){ Double num=nu1; for(;nu2>1;nu2--) nu1=nu1*num; jt.setText(String.valueOf(nu1)); } } a=0;g=1;t=true;st=e.getActionCommand(); } else if("x^y".equals(e.getActionCommand())){ if(t=true){ nu1=Double.parseDouble(jt.getText()); j=0; st1=e.getActionCommand(); a=1; } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值