`
fatedgar
  • 浏览: 133702 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

用java编写的计算器

阅读更多
用java编写的计算器
import java.awt.*;
import java.awt.event.*;
import java.util.*;

import javax.swing.*;
public class Calculator extends JFrame{
	 private float op1,op2;//定义两个变量存放需要运算的值
	 private String str="";//定义str去和text进行交叉赋值
	 private String opr,co;//opr存放符合,co用来存放复制的内容
	 private double re;//用来存放运算的结果
	 private boolean bo=false;//是否进行了+-*/运算
	 private boolean btime=false;//时间开关
    Container contentpane=this.getContentPane();
    JPanel panel1=new JPanel(new BorderLayout()),
           panel2=new JPanel(new FlowLayout()),
           panel3=new JPanel(new GridLayout(4,5)),
           panel4=new JPanel(new BorderLayout()),
           panel5=new JPanel(new BorderLayout());
    //菜单栏
    JMenuBar menubar=new JMenuBar();
    JMenu edit=new JMenu("编辑(E)"),
          find=new JMenu("查看(V)"),
          help=new JMenu("帮助(H)");
    JMenuItem copy=new JMenuItem("复制(C)",'C'),
              paste=new JMenuItem("粘贴(P)",'P'),
              standard=new JMenuItem("标准型(T)",'T'),
              science=new JMenuItem("科学型(S)",'S'),
              numarray=new JMenuItem("数字分组(I)",'I'),
              helptopic=new JMenuItem("帮助主题(H)",'H'),
              aboutcal=new JMenuItem("关于计算器(A)",'A');
    //输入文本框
    JTextField text=new JTextField(25);
    //数字键
    JButton  one=new JButton("1"),
             two=new JButton("2"),
             three=new JButton("3"),
             four=new JButton("4"),
             five=new JButton("5"),
             six=new JButton("6"),
             seven=new JButton("7"),
             eight=new JButton("8"),
             nine=new JButton("9"),
             zero=new JButton("0");
    //功能键
    JButton division=new JButton("/"),
            multiply=new JButton("*"),
            addition=new JButton("+"),
            subtration=new JButton("-"),
            sqrt=new JButton("sqrt"),
            residual=new JButton("%"),
            sign=new JButton("+/-"),
            dot=new JButton("."),
            reciprocal=new JButton("1/X"),
            amount=new JButton("="),
            backspace=new JButton("Backspace"),
            ce=new JButton("CE"),
            c=new JButton("C"),
            time=new JButton("time");
	public Calculator() {
		contentpane.setLayout(new BorderLayout());
		//textField文本从右边开始写
		text.setHorizontalAlignment(SwingConstants.RIGHT);		
		text.setText("0.");
		//菜单栏添加
		edit.add(copy);
		edit.add(paste);
		find.add(standard);
		find.add(science);
		find.addSeparator();
		find.add(numarray);
		help.add(helptopic);
		help.addSeparator();
		help.add(aboutcal);
//把组件添加至容器中
		menubar.add(edit);
		menubar.add(find);
		menubar.add(help);
		panel1.add(menubar,"North");
		panel1.add(text,"West");
		//添加数字、功能键至panel2、panel3
		panel2.add(backspace);
		panel2.add(ce);
		panel2.add(c);
		panel2.add(time);
		
		panel3.add(seven);
		panel3.add(eight);
		panel3.add(nine);
		panel3.add(division);
		panel3.add(sqrt);
		panel3.add(four);
		panel3.add(five);
		panel3.add(six);
		panel3.add(multiply);
		panel3.add(residual);
		panel3.add(one);
		panel3.add(two);
		panel3.add(three);
		panel3.add(subtration);
		panel3.add(reciprocal);
		panel3.add(zero);
		panel3.add(sign);
		panel3.add(dot);
		panel3.add(addition);
		panel3.add(amount);
		
		panel4.add(panel2,"North");
		panel4.add(panel3,"West");
		
		panel5.add(panel1,"North");
		panel5.add(panel4,"West");
		contentpane.add(panel5,"North");
//事件
		//助记符
		edit.setMnemonic('E');
		find.setMnemonic('V');
		help.setMnemonic('H');
		//快捷键
		KeyStroke kcopy=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);
		copy.setAccelerator(kcopy);
		KeyStroke kpaste=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);
		paste.setAccelerator(kpaste);
		//0-9、.的显示事件
		actionlistener1 al1=new actionlistener1();
		one.addActionListener(al1);
		two.addActionListener(al1);
		three.addActionListener(al1);
		four.addActionListener(al1);
		five.addActionListener(al1);
		six.addActionListener(al1);
		seven.addActionListener(al1);
		eight.addActionListener(al1);
		nine.addActionListener(al1);
		//小数点的ActionListener事件
		dot.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				int count;
				count=str.length();
		//1.第一位就为.时改变text中内容为:"0."
				if(count==0){
					str="0.";
					text.setText(str);
				}
		//2.不可以重复按"."
				else {if(!str.contains(".")){
					  str+=".";
					  text.setText(str);
				}
				else
					System.out.println("您再点的话,输入的将不再是小数了!");
				}
			}
		});
		//如果第一位是0那么第二位就不可以为0
		zero.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				int count;
				count=str.length();
			if(bo){
				if(!(str.contains("0")&&count==1)){
					  str="";
					  str+="0";
					  text.setText(str);
				}else
					System.out.println("您再点的话,输入的将不再是数字了!");
			  }
				else{
					if(!(str.contains("0")&&count==1)){
						  str+="0";
						  text.setText(str);
					}else
						System.out.println("您再点的话,输入的将不再是数字了!");
				}
			bo=false;
			}
		});
		//+、-、*、/、%运算
		actionlistener3 al3=new actionlistener3();
		addition.addActionListener(al3);
		subtration.addActionListener(al3);
		multiply.addActionListener(al3);
		division.addActionListener(al3);
		residual.addActionListener(al3);
		//CE和C清空按钮时间
		actionlistener2 al2=new actionlistener2();
		ce.addActionListener(al2);
		c.addActionListener(al2);
		//退格键
		backspace.addActionListener(new ActionListener(){
			 public void actionPerformed(ActionEvent e){
				 int count;
				 count=str.length()-1;
				 if(bo==false){
				 if(count>=0){
					 str=str.substring(0,count);
					 text.setText(str);
				 }
				 else
					 text.setText("0.");
			 }else
				 System.out.println("您现在正进行法则运算!");
			 }
		});
		//求平方根
		sqrt.addActionListener(new ActionListener(){
			 public void actionPerformed(ActionEvent e){
				 int count;
				 count=str.length();
				 if(count!=0){
				 op1=Float.parseFloat(text.getText());
				 re=Math.sqrt(op1);
				 String str1=String.valueOf(re);
				 text.setText(str1);
				 str="";
				 }
				 else
					 System.out.println("您现在的按sqrt键毫无意义");
			 }
		});
		//求倒数
		reciprocal.addActionListener(new ActionListener(){
			 public void actionPerformed(ActionEvent e){
				 int count;
				 count=str.length();
				 if(count!=0){
				 op1=Float.parseFloat(text.getText());
				 if(op1!=0){
				 re=1/op1;
				 String str1=String.valueOf(re);
				 text.setText(str1);
				 str=str1;
				 }
				 else{
					 text.setText("除数不可以为0的");
				      str="";
				 }
			 }
				 else
					 System.out.println("您现在的按1/X键毫无意义");
			 }
		});
		//=事件
		amount.addActionListener(new ActionListener(){
			 public void actionPerformed(ActionEvent e){
				 op2=Float.parseFloat(str);
		//需判断进行那种运算法则
				 if(opr=="+"){//加法运算
					 re=op1+op2;
					 String str1=String.valueOf(re);
					 text.setText(str1);
					 str=String.valueOf(re);
				 }else{
					 if(opr=="-"){//减法运算
						 re=op1-op2;
						 String str1=String.valueOf(re);
						 text.setText(str1);
						 str=String.valueOf(re);
					 }else{
						 if(opr=="*"){//乘法运算
							 re=op1*op2;
							 String str1=String.valueOf(re);
							 text.setText(str1);
							 str=String.valueOf(re);
						 }else{
							 if(opr=="/"&&op2!=0){//除法运算
								 re=op1/op2;
								 String str1=String.valueOf(re);
								 text.setText(str1);
								 str=String.valueOf(re);
							 }else{
								 if(opr=="%"){//取余运算
									 re=op1%op2;
									 String str1=String.valueOf(re);
									 text.setText(str1);
									 str="";
								 }
								 else if(op2==0){
								 text.setText("除数不可以为0的");
								 str="";
								 }
							 }
						 }
					 }
				 }
				 //打印看看
				 System.out.print(op1);
				 System.out.print(opr);
				 System.out.print(op2+"=");
				 System.out.print(re);
				 System.out.println();
			 }
		});
		//复制事件
		copy.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				 int count;
				 count=str.length();
				 if(count!=0){
				   co=text.getText();
				 }
				 else
					 System.out.println("没有可复制的对象");
			}
		});
		//粘贴事件
		paste.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				str=co;
				text.setText(str);
			}
		});
		//时间事件
		time.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if(btime==false){
				String st=(new Date()).toString();
				text.setText(st);
				str="";
				btime=true;
				}
				else{
					text.setText(str);
					btime=false;
				}
			}
		});
		//+/-事件
		sign.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				int a=Integer.valueOf(str).intValue();
				a=a*(-1);
				str=String.valueOf(a);
				text.setText(str);
			}
		});
	}
	//定义1-9按钮在text中显示的内部类
  class actionlistener1 implements ActionListener{
	  public void actionPerformed(ActionEvent e){
		  JButton button=(JButton)e.getSource();
		  String btext=button.getText();
		  //如果第一位为0再输入其他非零的整数时将零忽略
		  if(bo){
			  if(str.indexOf("0")==0&&str.length()==1){
				  str="";
				  str+=btext;
				  text.setText(str);
				}else{
			    str="";
			    str+=btext;
			    text.setText(str);}
		  }else{
			  if(str.indexOf("0")==0&&str.length()==1){
				  str="";
				  str+=btext;
				  text.setText(str);
				}else{
				  str+=btext;
				  text.setText(str);
			  }
		  }
		  bo=false;
	  }
  }
  //定义清空text中内容的内部类
  class actionlistener2 implements ActionListener{
	  public void actionPerformed(ActionEvent e){
		      str="";
			  text.setText("0.");
	  }
  }
  //定义+、-、*、/、%运算的内部类
  class actionlistener3 implements ActionListener{
	  public void actionPerformed(ActionEvent e){
		  int count;
		  
		  count=str.length();
		  if(count!=0){
		  JButton button=(JButton)e.getSource();
		     opr=button.getText();
		     op1=Float.parseFloat(str);
		     bo=true;
		  }
		  else
			  System.out.println("您现在的按键毫无意义!");
	  }
  }
  public static void main(String[] args){
	  Calculator cc=new Calculator();
	  cc.pack();
	  cc.setResizable(false);//不可最大化
	  cc.setVisible(true);
	  cc.setTitle("计算器");
	  cc.setDefaultCloseOperation(EXIT_ON_CLOSE);
	  Dimension scmsize=Toolkit.getDefaultToolkit().getScreenSize();
	  int w=cc.getSize().width;
	  int h=cc.getSize().height;
	  int x=(scmsize.width-w)/2;
	  int y=(scmsize.height-h)/2;
	  cc.setLocation(x, y);
  }
}
分享到:
评论

相关推荐

    利用java编写计算器程序过程(带代码)

    从标题中可以看出,这是一个关于使用 Java 编写计算器程序的过程详解,包括代码实现细节。 描述:“利用 Java 编写的计算器程序,带有音乐播放功能,和比较完整的三角函数计算” 从描述中可以看出,该计算器程序...

    Java编写的计算器

    用Java编写的小计算器可以实现加减乘除

    用JAVA编写计算器程序(模拟Windows计算器)

    ### 使用Java编写的计算器程序(模拟Windows计算器) #### 一、项目概述 本文档介绍了一个使用Java语言编写的简易计算器程序,该程序旨在模仿Windows系统的内置计算器功能。通过本项目,用户可以执行基本的数学...

    用java编写计算器论文

    在本篇论文中,作者张钰婕以"用java编写计算器"为主题,进行了一个简单的计算器系统的开发,旨在通过这个项目来提升Java编程技能和面向对象的设计理解。这篇论文的目的是结合理论学习,加强学生的实际操作能力和独立...

    用java实现计算器小程序的编写用java实现计算器小程序的编写

    用JAVA编写计算器小程序的实现用java实现计算器小程序的编写用java实现计算器小程序的编写用java实现计算器小程序的编写用java实现计算器小程序的编写

    JAVA编写计算器代码

    在Java编程语言中,创建一个计算器程序是一项基础但重要的练习,它可以帮助初学者更好地理解和运用基本的编程概念,如控制流程、数据类型、运算符以及类与对象的使用。在这个项目中,我们将深入探讨如何使用Java来...

    用JAVA编写计算器程序(模拟Windows计算器)

    ### 使用Java编写的计算器程序(模拟Windows计算器) #### 一、概述 本篇文章介绍的是一个使用Java语言编写的简易计算器程序,该程序旨在模仿Windows系统自带的计算器功能。通过使用Swing图形用户界面库,作者构建...

    用java编写计算器

    在Java编程语言中,创建一个简单的计算器涉及到基本的算术运算和用户输入处理。下面将详细介绍如何使用Java来实现这样一个计算器。...通过这种方式,可以理解如何用Java实现一个基础的计算器应用。

    采用java编写的计算器

    采用java 编写的一个小计算器程序 对于入门级java程序员了解界面设计有一定的帮助

    用java编写的计算器小程序

    标题中的“用Java编写的计算器小程序”指的是使用Java编程语言设计和实现的一个小型应用程序,它具备基本的计算功能,如加、减、乘、除等。这个计算器可能是一个命令行界面应用,也可能具有图形用户界面(GUI)。 ...

    用JAVA编写计算器程序(模拟Windows计算器).doc

    Java 编写计算器程序(模拟 Windows 计算器) 摘要:本文主要讲述如何使用 Java 编写一个计算器程序,以模拟 Windows 计算器的功能。该程序使用 Java 的图形用户界面(GUI)编程技术,实现了计算器的基本运算功能,...

    java编写的计算器

    Java 编写的计算器是一个基础但实用的编程项目,它展示了如何使用Java语言来实现一个图形用户界面(GUI)程序。这个计算器可能包含了基本的数学运算,如加、减、乘、除,以及可能的一些特殊功能,如求平方根、百分比...

    JAVA编写计算器

    ### JAVA编写计算器的知识点 #### 一、项目概述 该项目是一个使用Java语言开发的简易计算器应用程序,其设计灵感来源于Windows系统的内置计算器。该计算器具备基本的数学运算功能,包括加、减、乘、除等,并且支持...

    JAVA编写的计算器程序

    编写计算器程序是学习编程基础知识,如控制流、数据类型和函数调用的一个经典练习。 1. **基础概念**:首先,我们需要理解JAVA的基础概念,包括类(Class)、对象(Object)、方法(Method)以及变量(Variable)。...

    java编写的计算器代码

    用java编写的一个计算器程序,可实现系统计算器的基本功能

    java编写的计算器源码

    用java编写的计算器applet程序可以实现连程程的

Global site tag (gtag.js) - Google Analytics