⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calclulator.java

📁 本程序由windows xp 环境下 编写
💻 JAVA
字号:
/**
*计算器的应用bete2版
*/
import java.awt.*;
import java.awt.event.*;
class calclulator{
	public static void main(String args[]){
		proce pr=new proce();
	}
}
class proce extends Frame implements ActionListener
{
	MenuBar menubar1;
	Menu menufile;
	Menu menuedit;
	Menu menuhelp;
	MenuItem menufileopen;
	MenuItem menufilesave;
	MenuItem menufileclose;
	MenuItem menufileexit;
	MenuItem menucopy;
	MenuItem menupaste;
	MenuItem menudelete;
	MenuItem menuhelpabout;
	MenuItem menuhelpa;
	
	Button button0=new Button("0");
	Button button1=new Button("1");
	Button button2=new Button("2");
	Button button3=new Button("3");
	Button button4=new Button("4");
	Button button5=new Button("5");
	Button button6=new Button("6");
	Button button7=new Button("7");
	Button button8=new Button("8");
	Button button9=new Button("9");
	Button button10=new Button(".");
	Button button11=new Button("+");
	Button button12=new Button("—");
	Button button13=new Button("X");
	Button button14=new Button("/");
	Button button15=new Button("乘方");
	Button button16=new Button("开方");
	Button button17=new Button("=");
	Button button18=new Button("C");
	TextField result=new TextField("",80);
	
	
	Panel pan1=new Panel();
	Panel pan2=new Panel();
	Panel pan3=new Panel();
	Panel pan4=new Panel();
	Panel pan5=new Panel();	
	Panel pan0=new Panel();
	Panel pan6=new Panel();
	Panel manpan=new Panel();
	Panel manpan0=new Panel();
	Label lab=new Label();
	int oper=0,peroper=0,newoper=0;//记录运算符
	double num1=0.0,num2=0.0;			//记录数字
	boolean flag=false,flag0=false,hasoper=false;
	boolean flagnum1=true,flagnum2=false;
	String num="",numble="";
	String str="";
	//以上为公共变量;方法
	final int AND=11,
	SUB=12,
	MULT=13,
	DIV=14,
	POW=15,
	SQRT=16,
	EQUAL=17,
	INS=18;//小数点
	
	public proce()
	{
		super("计算器 Bete2版");
		this.setLayout(new FlowLayout());
		setBackground(Color.PINK);
		result.setEditable(false);
		button0.setBackground(Color.green);
		button17.setBackground(Color.orange);
		button17.setFont(new Font("Courier",Font.PLAIN,16));
		button11.setFont(new Font("Courier",Font.PLAIN,16));
		button10.setFont(new Font("Courier",Font.PLAIN,19));
		button18.setFont(new Font("Courier",Font.PLAIN,16));
		pan0.setLayout(new GridLayout(7,1,3,1));
		result.setBackground(Color.lightGray); 
		pan1.setLayout(new GridLayout(1,4,5,1));
		pan2.setLayout(new GridLayout(1,4,5,1));
		pan3.setLayout(new GridLayout(1,4,5,1));
		pan4.setLayout(new GridLayout(1,4,5,1));
		pan5.setLayout(new GridLayout(1,4,5,1));
		//manpan0.setLayout(new GridLayout(2,1));
		//manpan.setLayout(new FlowLayout());
		menubar1=new MenuBar();
		
		menufile=new Menu("文件");
		menuedit=new Menu("编辑");
		menuhelp=new Menu("帮助");
		menufileopen=new MenuItem("打开");
		menufilesave=new MenuItem("保存");
		menufileclose=new MenuItem("关闭");
		menufileexit=new MenuItem("退出");
		menupaste=new MenuItem("粘贴");
		menudelete=new MenuItem("删除");
		menucopy=new MenuItem("复制");
		menuhelpabout=new MenuItem("使用帮助");
		menuhelpa=new MenuItem("关于");
		//贴加监听;
		handle ha=new handle(this);
		menufileopen.addActionListener(this);
		menufilesave.addActionListener(this);
		menufileclose.addActionListener(this);
		menufileexit.addActionListener(this);
		menupaste.addActionListener(this);
		menudelete.addActionListener(this);
		menucopy.addActionListener(this);
		menuhelpabout.addActionListener(ha);
		menuhelpa.addActionListener(ha);
		
		//添加到菜单上;
		menufile.add(menufileopen);
		menufile.add(menufilesave);
		menufile.add(menufileclose);
		menufile.add(menufileexit);
		menuedit.add(menupaste);
		menuedit.add(menudelete);
		menuedit.add(menucopy);
		menuhelp.add(menuhelpabout);
		menuhelp.add(menuhelpa);
		//把菜单添加到菜单栏上;
		menubar1.add(menufile);
		menubar1.add(menuedit);
		menubar1.add(menuhelp);
		//把菜单栏设置于frame上;
		this.setMenuBar(menubar1);
		
		
		
		button0.addActionListener(this);
		button1.addActionListener(this);
		button2.addActionListener(this);
		button3.addActionListener(this);
		button4.addActionListener(this);
		button5.addActionListener(this);
		button6.addActionListener(this);
		button7.addActionListener(this);
		button8.addActionListener(this);
		button9.addActionListener(this);
		button10.addActionListener(this);
		button11.addActionListener(this);
		button12.addActionListener(this);
		button13.addActionListener(this);
		button14.addActionListener(this);
		button15.addActionListener(this);
		button16.addActionListener(this);
		button17.addActionListener(this);
		button18.addActionListener(this);
		pan0.add(result);
		pan0.add(lab);
		pan1.add(button0);
		pan1.add(button1);
		pan1.add(button2);
		pan1.add(button3);
		pan0.add(pan1);
		
		pan2.add(button4);
		pan2.add(button5);
		pan2.add(button6);
		pan2.add(button7);
		pan0.add(pan2);
		
		pan3.add(button8);
		pan3.add(button9);
		pan3.add(button10);
		pan3.add(button11);
		pan0.add(pan3);
		
		pan4.add(button12);
		pan4.add(button13);
		pan4.add(button14);
		pan4.add(button15);
		pan0.add(pan4);
		
		pan5.add(button16);
		pan5.add(button17);
		pan5.add(button18);
		
		pan0.add(pan5);
		//pan6.add(result);
		//manpan.add(pan6);
		//manpan0.add(manpan,0);
		//manpan0.add(pan0,1);
		this.add(pan0);
		
		
		addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});
		setSize(600,290);
		//this.pack();
		//this.show();
		setVisible(true);
	}
   public void actionPerformed(ActionEvent e)
   {	/*假如信息不是来自于计算符号;则对显示框清屏;*/
   	if(e.getSource()!=button11&&e.getSource()!=button12&&e.getSource()!=button13&&e.getSource()!=button14&&e.getSource()!=button15
   	&&e.getSource()!=button16&&e.getSource()!=button17&&e.getSource()!=menufileexit&&e.getSource()!=button18){													//清屏完毕;
   		if(e.getSource()==button0){
   			initstar();
   			numble="0";
   			flag=false;
   			peroperate(numble);                       //peroperate()被调用;
   		}
   		else if(e.getSource()==button1){
   			initstar();
   			numble="1";
   			flag=false;
   			peroperate(numble);
   		}
   		else if(e.getSource()==button2){
   			initstar();
   			numble="2";
   			flag=false;
   			peroperate(numble);
   		}
   		else if(e.getSource()==button3){
   			initstar();
   			numble="3";
   			flag=false;
   			peroperate(numble);
   		}
   		else if(e.getSource()==button4){
   			initstar();
   			numble="4";
   			flag=false;
   			peroperate(numble);
   		}
   		else if(e.getSource()==button5){
   			initstar();
   			numble="5";
   			flag=false;
   			peroperate(numble);
   		}
   		else if(e.getSource()==button6){
   			initstar();
   			numble="6";
   			flag=false;
   			peroperate(numble);
   		}
   		else if(e.getSource()==button7){
   			initstar();
   			numble="7";
   			flag=false;
   			peroperate(numble);
   		}
   		else if(e.getSource()==button8){
   			initstar();
   			numble="8";
   			flag=false;
   			peroperate(numble);
   		}
   		else if(e.getSource()==button9){
   			initstar();
   			numble="9";
   			flag=false;
   			peroperate(numble);
   		}
   		else if(e.getSource()==button10){
   			initstar();
   			numble=".";
   			flag=false;
   			peroperate(numble);
   		}
   	}
   						
   	else if(e.getSource()==button11){
   		oper=AND;
   		flag=true;
   		
   		answerto(AND);                                //answerto()被调用;
   		peroper=oper;
   		showoper("+");
   	}
   	else if(e.getSource()==button12){
   		oper=SUB;
   		flag=true;
   		
   		showoper("-");
   		answerto(SUB);
   		peroper=oper;
   		
   	}
   	else if(e.getSource()==button13){
   		oper=MULT;
   		flag=true;
   		showoper("*");
   		answerto(MULT);
   		peroper=oper;
   		
   	}
   	else if(e.getSource()==button14){
   		oper=DIV;
   		flag=true;
   		showoper("/");
   		answerto(DIV);
   		peroper=oper;
   		
   	}
   	else if(e.getSource()==button15){
   		oper=POW;
   		flag=true; 
   		showoper("POW");
   		answerto(POW);
   		peroper=oper;
   		
   	}
   	else if(e.getSource()==button16){
   		oper=SQRT;//System.out.println("LLfL");
   		flag=true;
   		showoper("SQRT");
   		answerto(SQRT);
   		peroper=oper;
   		
   	}
   	else if(e.getSource()==button17){
   		oper=EQUAL;//System.out.println("LLL");
   		showoper("=");
   		answerto(EQUAL);
   		peroper=oper;
   	}
   	else if(e.getSource()==menufileexit){
   	System.exit(0);
    }
    else if(e.getSource()==button18){
    	initstar();
    	show("");
    }   	
  }
   	
  public void answerto(int oper)               //calclutor()被调用    showoper()被调用
  {
  	flag=true;flagnum1=false;
  	flagnum2=true;
   	if(oper	== EQUAL){
   		String ans="";
   		ans=Double.toString(calclutor(peroper,num1,num2));
   		showoper(ans);//System.out.println(ans);
   		num1=num2=0.0;   //执行完一次计算加显示之后清空num1,num2;
   		flag0=true;//已按下"=";
   		hasoper=true;
   		
   	}
   	else{
   		peroper=oper;
   		flag0=false;//没有按下"="
   	}
	}
  public double calclutor(int peroper,double num1,double num2)
  {//oper为计算的代码;num1,num2为输入的数字;
   	double answer=0.0;
   	switch(peroper)
   	{
   		case AND://"+"
   		answer=num1+num2;//System.out.println(num1);
   		break;
   		case SUB://"-"
   		answer=num1-num2;
   		break;
   		case MULT://"*"
   		answer=num1*num2;
   		break;
   		case DIV://"/"
   		answer=num1/num2;
   		break;
   		case POW://"乘方"
   		answer=Math.pow(num1,num2);
   		break;
   		case SQRT://"开方"
   		answer=Math.sqrt(num1);
   		break;
   		default:
   		break;
   	}
   	//计算之后清空  num1 , num2; 
   	return (answer);
  }
   
   
   
  public void show(String str)//显示区用textField:1+3=4;(result);
  {
  	result.setFont(new Font("Courier",Font.PLAIN,16));
   	result.setText(str);
  }
   
  void showoper(String operstr)//显示区参数传入方法;             show();被调用
  {    //传入的都为string格式;
  	
  	if(flag){
  		num="";
  		flag=false;
  	}
  	
    if(flag&&peroper==EQUAL)//第二次计算之前清空显示区;
   	{
   		str="";
   		show(str);
   	}
   	else
   	{
  	str=str.concat(operstr);
   	show(str);//同类中的方法可以被随便调用;
    }
  }
  
  public void peroperate(String numble){		//对数字与小数点的先前处理;numble+point
   	num=num.concat(numble);			//System.out.println("first  ::the num:"+num+"ok");	                                                             //数字合成完成;
   	showoper(numble);
   	if(flagnum1){         // System.out.println("the num:"+num+"ok");
   		char[] ch=new char[1];
   		num.getChars(0,1,ch,0);
   		String sr=new String(ch);
   		if(sr.equals(".")){
   			num="0"+num;//System.out.println(num);
   		  
   		}num1=Double.valueOf(num).doubleValue();
   		 //System.out.println("num1");  		
   	}
   	else if(flagnum2){
   		char[] ch=new char[1];
   		num.getChars(0,1,ch,0);
   		String sr=new String(ch);
   		if(sr.equals(".")){
   			num="0"+num;//System.out.println(num);
   		}
   		num2=Double.valueOf(num).doubleValue();
   		
   	}	
   	numble="";																							//数字处理完成已生成:  num1  和  num2;
  }
  void initstar()
  {
  	if(hasoper)
  	{
      oper=0;peroper=0;newoper=0;
    	num1=0.0;num2=0.0;			
    	flag=false;flag0=false;
    	num="";numble="";
    	str="";num1=num2=0.0;
    	hasoper=false;//System.out.println("the second");
    	show(str);flagnum1=true;flagnum2=false;
    }
  }
}
  
   	
class handle implements ActionListener   //监听类        //用来实例化主程序
{
	proce pf;
	public handle(proce pf)
	{
		this.pf=pf;
		
	}
	public void actionPerformed(ActionEvent e)
	{
		
		  dial da=new dial(pf,"关于");da.setVisible(true);
		  //da.show();
	
	 }
	//pf.repaint();
}











class dial extends Dialog implements ActionListener
{
	String choice0="";
	dial(Frame parent,String title)
	{
		super(parent,title,false);
		setLayout(new FlowLayout(FlowLayout.RIGHT,10,10));
		setSize(300,200);
		choice0=title;
		
		
		Button b;
		add(b=new Button("确定"));
		//b.setBounds(20,20,100,100);
		b.addActionListener(this);
		
		this.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				dispose();
			}
		}
		);
	}
	public void actionPerformed(ActionEvent e)
	{
		dispose();
	}
	public void paint(Graphics g)
	{
		if(choice0.equals("关于"))
		{
			g.drawString("计算器 Bete2 版 " ,40,90);
		  g.drawString(" 由 Leniux 制 作…… \n\n  ",50,110);
		  g.drawString("   …… 版 权 所 有",100,130);
	  }
	  else if(choice0.equals("帮助"))
	  {
	    g.drawString("   无帮助",20,140);
	  }
	}
}
   		
   	
   	
   	
   	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -