【JAVA】作业---计算器

import java.awt.*;
import java.util.List;
import java.awt.event.*;
import java.util.*;

import javax.swing.*;

public class MyComputer extends JFrame{
    public static int MCPT_WIDTH = 480;
    public static int MCPT_HEIGHT = 520;
	private String[] keys = {"1","2","3","4","5","6","7","8","9","0","清零","平方","+","-","*","/"};
	public int key_value = 0;
	TextField txf = new TextField();
	 int resultnum =0;
	String text1 = "";
	String text2 = "";
	String operate = "";
	String str = null;
	 
	public static void main(String[] args) {
		new MyComputer().start();

	}
	
	public void start() {
		setBounds(600, 200, MCPT_WIDTH, MCPT_HEIGHT);
		setTitle("MyComputer");
		setVisible(true);
		setResizable(false);
		
		Label lbl = new Label("计算结果:");
		Panel p4 = new Panel(new BorderLayout(3,5));
		
		Panel p1 = new Panel();
		Panel p2 = new Panel();
		Panel p3 = new Panel();
		
		addWindowListener(new FrameMonitor());//添加监听器
		add(p1,BorderLayout.CENTER);
		add(p4,BorderLayout.NORTH);
		txf.addActionListener(new TextFieldMonitor());
		p4.add(lbl,BorderLayout.NORTH);//添加frame标签
		p4.add(txf,BorderLayout.SOUTH);//添加textfield
		p1.add(p2);
		p1.add(p3);
		p2.setLayout(new GridLayout(4,3,3,3));
		p3.setLayout(new GridLayout(4,1,3,3));
		
		//将JButton们 写入arraylist
	List<JButton> buttonlist = new ArrayList<JButton>();//报错:import错误,将util.list写成awt.list
		for(int i = 0;i<keys.length;i++) {//如果让i从1开始,会报错,why?
			buttonlist.add(new JButton(keys[i]));//用循环遍历字符串数组keys为button命名
			p2.add(buttonlist.get(i));
			//注意角标!
			if(i>11) {
				p3.add(buttonlist.get(i));
			}
			buttonlist.get(i).addActionListener(new ButtonMonitor());
		}
    	pack();
	
	}
	//添加window监听,即能关闭窗口
	private class FrameMonitor extends WindowAdapter{
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
     }
	
	//添加button监听,实现运算功能
	 class ButtonMonitor implements ActionListener {
		
		@Override
		public void actionPerformed(ActionEvent e) {
			//此方法能显示出button上面的值,但是格式是String且不能转化成int
		    //强制将String转换int,用Integer.parseInt(s)方法
		
	    str = e.getActionCommand();
		
		if(str=="清零") {
			txf.setText("0");
		}
		//如果按下数字按钮
		if("123456789".indexOf(str)>=0) {
			txf.setText(str);
			option();	
		}
		
		
		else {
			
				if(str =="+")
			{  
				operate = "+";
			    option();
			    System.out.println("operate:"+operate);
			}
			
			if(str =="-")
			{   
			    operate = "-";
			    option();
			    System.out.println("operate:"+operate);
			}
			
			if(str =="*")
			{   operate = "*";
				option();
				System.out.println("operate:"+operate);
			}
			
			if(str =="/")
			{   operate = "/";
			    option();
			    System.out.println("operate:"+operate);
			}
			
			if(str =="平方")
			{   
				resultnum = Integer.parseInt(txf.getText());
				operate = "平方";
			    option();
			    txf.setText(resultnum+"");
			    System.out.println("operate:"+operate);
			}
		resultnum = Integer.parseInt(txf.getText());
		System.out.println("resultnum1:"+resultnum);
		
		}	
	}
		
	//调用option方法才会接收button上的数字:利用时间差实现一个参数resultnum计算。
		public void option(){
		if(operate=="+")
		{
			resultnum += Integer.parseInt(txf.getText());
			System.out.println("resultnum:"+resultnum);	
			
		}
		if(operate=="-")
		{
			resultnum -= Integer.parseInt(txf.getText());
			System.out.println("resultnum:"+resultnum);	
		}
		if(operate=="*")
		{
			resultnum *= Integer.parseInt(txf.getText());
			System.out.println("resultnum:"+resultnum);	
		}
		if(operate=="/")
		{
			resultnum /= Integer.parseInt(txf.getText());
			System.out.println("resultnum:"+resultnum);		
		}
		if(operate=="平方")
		{
			resultnum *= resultnum;
			//System.out.println("resultnum:"+resultnum);		
		}
	}
  }
	
	 class TextFieldMonitor implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e) {
		  txf.setText(""+resultnum);
		 }
       }  
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java作业 科学计算器 menu切换普通与科学计算器 部分代码: class MyKey extends KeyAdapter { public void keyPressed(KeyEvent e) { char c = e.getKeyChar(); System.out.print(c); boolean bFlag = false; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if(IfResult){ tf.setText(""); IfResult = false; } tf.setText(tf.getText().trim() + c); bFlag = true; break; case '.': if(tf.getText().trim().indexOf(".") == -1){ tf.setText(tf.getText() + "."); } bFlag = true; break; case '_': if(Double.parseDouble(tf.getText()) > 0){ if(tf.getText().length() > 1){ tf.setText(tf.getText().substring(0, tf.getText().length() - 1)); }else{ tf.setText("0"); IfResult = true; } }else{ if(tf.getText().length() > 2){ tf.setText(tf.getText().substring(0, tf.getText().length() - 1)); }else{ tf.setText("0"); IfResult = true; } } bFlag = true; break; case '+': if(flag){ IfResult = false; } if(IfResult){ oper = "+"; }else{ getResult(Double.parseDouble(tf.getText())); oper = "+"; IfResult = true; } bFlag = true; break; case '-': if(flag){ IfResult = false; } if(IfResult){ oper = "-"; }else{ getResult(Double.parseDouble(tf.getText())); oper = "-"; IfResult = true; } bFlag = true; break; case '*': if(flag){ IfResult = false; } if(IfResult){ oper = "*"; }else{ getResult(Double.parseDouble(tf.getText())); oper = "*"; IfResult = true; } bFlag = true; break; case '/': if(flag){ IfResult = false; } if(IfResult){ oper = "/"; }else{ getResult(Double.parseDouble(tf.getText())); oper = "/"; IfResult = true; } bFlag = true; break; case '=': if(flag){ IfResult = false; } if(IfResult){ oper = "="; }else{ getResult(Double.parseDouble(tf.getText())); oper = "="; IfResult = true; } bFlag = true; break; } if(bFlag && tf.getText().equals("0")){ tf.setText("0"); IfResult = true; flag = true; } } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值