使用Java 创建一个计算器


这是我自己写的,使用Java创建一个计算器,有不对的地方请指出,谢谢


package third;
import java.awt.Button;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


//让类去继承 Frame窗体类
public class CalcFrame extends Frame implements ActionListener{

	//声明一个成员变量,记录用户所按下的操作符
	char calcChar ;
	
	//加载窗体属性 方法
	public void load(){
		
		setBounds(100, 100, 300, 300); //设置窗体的所在位置,以及高度和宽度
		setTitle("我的第一个Java计算器");   //设置标题
		
		Image image = Toolkit.getDefaultToolkit().getImage("images/帅哥.jpg");
	    setIconImage(image);  //加载窗体中的图标
		
		setVisible(true);   //是否要将窗体显示的方法
		
		//向窗体添加一个关闭按钮功能
		addWindowListener( new WindowAdapter() {

			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		} );
		
		loadButton();  //调用了加载按钮的方法
		loadMenu();   //调用了加载菜单条的方法
		
	}
	
	//在窗体中加载菜单条
	public void loadMenu(){
		
		MenuBar mb = new MenuBar();  //菜单条对象
		
		Menu menu1 = new Menu("查看"); //菜单对象
		
		MenuItem mi1 = new MenuItem("清除"); //子菜单对象
		menu1.add(mi1);  //把子菜单对象添加到相应的菜单对象中
		
		Menu menu2 = new Menu("编辑");
		Menu menu3 = new Menu("帮助");
		
		mb.add(menu1);  //将菜单对象添加到菜单条对象中
		mb.add(menu2);
		mb.add(menu3);
		
		setMenuBar(mb);  //将菜单条对象添加到窗体对象中
		
		
	}
	
	TextField tf = new TextField();   //文本框
	
	//在窗体中加载控件
	public void loadButton(){
		
		
		
		setLayout( new GridLayout(2,1) );   //设置窗体的布局方式,为两行一列
		
		add(tf);   //将文本框加入到窗体中
		
		
		Panel panel = new Panel();    //创建一个容器
		panel.setLayout( new GridLayout(4,4) );     //设置该窗器布局方式,为4行4列
		
		
		Button btn1 = new Button("1");  //创建按钮
		btn1.addActionListener(this);    //让按钮与实现的方法产生关系
		btn1.setActionCommand("1");      //让按钮在点击时产生一个命令
		
		Button btn2 = new Button("2");
		btn2.addActionListener(this);    
		btn2.setActionCommand("2");      
		
		Button btn3 = new Button("3");
		btn3.addActionListener(this);    
		btn3.setActionCommand("3");      
		
		Button btn4 = new Button("4");
		btn4.addActionListener(this);    
		btn4.setActionCommand("4");      
		
		Button btn5 = new Button("5");
		btn5.addActionListener(this);    
		btn5.setActionCommand("5");      
		
		Button btn6 = new Button("6");
		btn6.addActionListener(this);    
		btn6.setActionCommand("6");      
		
		Button btn7 = new Button("7");
		btn7.addActionListener(this);    
		btn7.setActionCommand("7");      
		
		Button btn8 = new Button("8");
		btn8.addActionListener(this);    
		btn8.setActionCommand("8");      
		
		Button btn9 = new Button("9");
		btn9.addActionListener(this);    
		btn9.setActionCommand("9");      
		
		Button btnJia = new Button("+");
		btnJia.addActionListener(this);    
		btnJia.setActionCommand("+"); 
		
		Button btnJian = new Button("-");
		btnJian.addActionListener(this);    
		btnJian.setActionCommand("-"); 
		
		Button btnCheng = new Button("*");
		btnCheng.addActionListener(this);    
		btnCheng.setActionCommand("×"); 
		
		Button btnChu = new Button("/");
		btnChu.addActionListener(this);    
		btnChu.setActionCommand("/"); 
		
		Button btnMo = new Button("%");
		btnMo.addActionListener(this);    
		btnMo.setActionCommand("%"); 
		
		Button btnResult = new Button("=");
		btnResult.addActionListener(this);    
		btnResult.setActionCommand("="); 
		
		Button btnCancel = new Button("C");
		btnCancel.addActionListener(this);    
		btnCancel.setActionCommand("C"); 
		
		panel.add(btn1);   //将所有的按钮加到窗器中
		panel.add(btn2);
		panel.add(btn3);
		panel.add(btnJia);
		panel.add(btn4);
		panel.add(btn5);
		panel.add(btn6);
		panel.add(btnJian);
		panel.add(btn7);
		panel.add(btn8);
		panel.add(btn9);
		panel.add(btnCheng);
		panel.add(btnChu);
		panel.add(btnMo);
		panel.add(btnResult);
		panel.add(btnCancel);
		
		add(panel);//调用窗体对象的add方法,是将容器添加到窗体中
		
	}
	
	
	public static void main(String[] args) {
		CalcFrame calc = new CalcFrame();
		calc.load();

	}

	//如果要实现按钮的单击功能的话,就需要实现ActionListener类所提供的方法
	@Override
	public void actionPerformed(ActionEvent e) {
		//提示:e.getActionCommand()方法是接收一个命令的值
		
		Font f = new Font("宋体",Font.BOLD,30); //由于文本框中的文字太小,因此创建一个带格式的字体类
		tf.setFont(f);//将字体设置到文本框中
		
		char c = e.getActionCommand().charAt(0);  //获取所按下的符号
		
		if(c>='1'&&c<='9') {  //如果该符号是在1~9之间,就正常显示在文本框中
			
			tf.setText(  tf.getText() +  e.getActionCommand() ); //设置文本框中的字体
			
		} else if (c=='='){  //如果按的是等号,就计算结果
			
			tf.setText(calcNum());
			
		} else if(c == 'C'){  //如果按的是清除符号,就一个一个清除
			
			String txt = tf.getText();
			if(txt.length()>0){ 
				tf.setText(txt.substring(0,txt.length()-1));
			}
			
	    }else { //否则就是其它符号,要记录在变量中,方便运算
			
			calcChar=e.getActionCommand().charAt(0); //记录操作符
			tf.setText(  tf.getText() +  e.getActionCommand() ); //设置文本框中的字体
			
		}
	}
	
	//进行计算的方法
	public String calcNum(){
		String[] numArray=new String[0];  //声明一个数组
		int result=0;
		switch(calcChar){
		case '+': //如果操作符是加号
			System.out.println(tf.getText());
			numArray = tf.getText().split("+"); //根据+进行分割,分成两个数,然后将这两个数用加号加起来
			result = Integer.parseInt(numArray[0])+Integer.parseInt(numArray[1]);
			break;
		case '-':
			numArray = tf.getText().split("-");//根据+进行分割,分成两个数,然后将这两个数用减号运行
			result = Integer.parseInt(numArray[0])-Integer.parseInt(numArray[1]);
			break;
		case '×':
			numArray = tf.getText().split("×");//根据+进行分割,分成两个数,然后将这两个数相乘
			result = Integer.parseInt(numArray[0])*Integer.parseInt(numArray[1]);
			break;
		case '/':
			numArray = tf.getText().split("/");//根据+进行分割,分成两个数,然后将这两个数用除号运算
			result = Integer.parseInt(numArray[0])/Integer.parseInt(numArray[1]);
			break;
		case '%':
			numArray = tf.getText().split("%");//根据+进行分割,分成两个数,然后将这两个数用%号运算
			result = Integer.parseInt(numArray[0])%Integer.parseInt(numArray[1]);
			break;
		
		}
		return result+"";
		
	}
	
	
	
	

}


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值