用java代码写的简易计算器(可以实现基本的加减乘除功能)

计算器使我们在日常生活中经常使用的一个工具。这学期学java的时候,做的一个实验报告就是用swing组件或awt组件写一个简易计算器。

在此记录以下(用swing组件写的简易计算器),代码如下(经测试):

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class JiSuan extends JFrame{
	JPanel panel;
	JTextField text;
	JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9;	//0~9四个数字(可写成数组)
	JButton bot,add,sub,mul,div,equ;	//加减乘除以及小数点五个符号
	public JiSuan(){
		this.setBounds(300, 200, 400, 300);	//窗体大小
		this.setTitle("计算器");	//窗体名称
		this.setLayout(new BorderLayout());	//设置计算机窗体的布局方式
		
		text = new JTextField(15);		//计算区域
		
		//新建数字按钮
		jb0 = new JButton("0");
		jb1 = new JButton("1");
		jb2 = new JButton("2");
		jb3 = new JButton("3");
		jb4 = new JButton("4");
		jb5 = new JButton("5");
		jb6 = new JButton("6");
		jb7 = new JButton("7");
		jb8 = new JButton("8");
		jb9 = new JButton("9");
		
		//新建符号按钮
		bot = new JButton(".");
		add = new JButton("+");
		sub = new JButton("-");
		mul = new JButton("*");
		div = new JButton("/");
		equ = new JButton("=");
		
		//新建计算器数字及符号所在区域面板
		panel = new JPanel();
		panel.setLayout(new GridLayout(4,4));	//设置面板的布局方式
		
		//将各按钮组件放入面板(panel)中
		//第一行
		panel.add(jb7);
		panel.add(jb8);
		panel.add(jb9);
		panel.add(div);
		//第二行
		panel.add(jb4);
		panel.add(jb5);
		panel.add(jb6);
		panel.add(mul);
		//第三行
		panel.add(jb1);
		panel.add(jb2);
		panel.add(jb3);
		panel.add(sub);
		//第四行
		panel.add(bot);
		panel.add(jb0);
		panel.add(equ);
		panel.add(add);
		
		
		this.add(text,BorderLayout.NORTH);
		this.add(panel);
		
		MyEvent();	//事件处理
		
		this.setVisible(true);	//设置窗体显示
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//设置窗体可关闭
	}
	
	public void MyEvent(){
		/*将以下内容封装到Text方法中
		 * jb0.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
//				text.setText("0");
				String str = jb0.getText();
				System.out.println(str);
			}
			
		});*/
		//为各按钮添加事件处理
		Text(jb0);
		Text(jb1);
		Text(jb2);
		Text(jb3);
		Text(jb4);
		Text(jb5);
		Text(jb6);
		Text(jb7);
		Text(jb8);
		Text(jb9);
		Text(bot);
		Text(add);
		Text(sub);
		Text(mul);
		Text(div);
		
		//“=”按钮的事件处理
		equ.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				
				text.setText(text.getText()+equ.getText());
				
				if(text.getText().contains("+")){//做加法运算
//					String[] str1 = text.getText().split("+");		//错误语句
					StringTokenizer st1 = new StringTokenizer(text.getText(),"+");
//					System.out.println("str1======"+st1.nextToken());
					double d1,d2 = 0;
					d1 = Double.parseDouble(st1.nextToken());
					while(st1.hasMoreTokens()){
						StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
//						System.out.println("str2======"+st2.nextToken());
						d2 = Double.parseDouble(st2.nextToken());
					}
					
					text.setText(text.getText()+" "+(d1+d2));
				}else if(text.getText().contains("-")){//做减法运算
					StringTokenizer st1 = new StringTokenizer(text.getText(),"-");
					double d1,d2 = 0;
					d1 = Double.parseDouble(st1.nextToken());
					while(st1.hasMoreTokens()){
						StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
						d2 = Double.parseDouble(st2.nextToken());
					}
					
					text.setText(text.getText()+" "+(d1-d2));
				}else if(text.getText().contains("*")){//做乘法运算
					StringTokenizer st1 = new StringTokenizer(text.getText(),"*");
					double d1,d2 = 0;
					d1 = Double.parseDouble(st1.nextToken());
					while(st1.hasMoreTokens()){
						StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
						d2 = Double.parseDouble(st2.nextToken());
					}
					
					text.setText(text.getText()+" "+(d1*d2));
				}else if(text.getText().contains("/")){//做除法运算
					StringTokenizer st1 = new StringTokenizer(text.getText(),"/");
					double d1,d2 = 0;
					d1 = Double.parseDouble(st1.nextToken());
					while(st1.hasMoreTokens()){
						StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
						d2 = Double.parseDouble(st2.nextToken());
					}
					
					text.setText(text.getText()+" "+(d1/d2));	//将运算结果放到text区域
				}
			}
			
		});
	}
	
	//各按钮的事件处理方法
	public void Text(JButton button){
		button.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
//				text.setText("0");
				String str = button.getText();
//				System.out.println(str);
				text.setText(text.getText()+str);
			}
			
		});
//		return button.getText();
	}
	
	//主函数
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new JiSuan();
	}

}
写的这个计算器虽然功能不算完善,不过可以实现基本的加减乘除。

运行结果如下图所示:


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页