用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();
	}

}
寫的這個計算器雖然功能不算完善,不過可以實現基本的加減乘除。

運行結果如下圖所示:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章