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

📄 calculator.java

📁 用JAVA写的一个简单的计算器。。。 可完成连加及单数连加 适合入门
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;

import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.DataFlavor;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
import javax.swing.KeyStroke;
import javax.swing.ImageIcon;

import java.lang.Math;
import java.lang.Double;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

/**
*主类
*/
public class Calculator
{public static void main (String[] agrs)
 {new CalculatorFrame();
 }
}

/**
*Frame类
*/
class CalculatorFrame extends JFrame
{private static final long serialVersionUID = 1L;

 private JPanel contentpane,panela,panelb,panelc,paneld,panele;

 private JButton back,c,ac,bsqrt,bpf,bds,bf,b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bd,bdy,bjia,bjian,bcheng,bchu;

 private JTextField text,cacheText;
 
 private JLabel label;
 
 private String show=null;
 
 private String sign="+";
 
 private String CMD=null;
 
 private double ima,last=0,sum,temp=0;
 
 private int suanfa=0;
 
 private boolean result=false;
 
 private boolean error=false;
 
 private boolean deng=false;
 
 private boolean start=true;
 
 private boolean isCMD=false;
 
 private boolean isDOT=false;
 
 private Clipboard clipboard=null;
 //private Number_Key number_key = new Number_Key();

 /**
 *=====数字输入累计函数=====
 */
 private void addNumber(String s)
 {if (error==false&&isCMD==false)
  {if (show==null||text.getText().equals("0")){show=s;}
   else {if (show.length()<20) {show=show+s;}}
   text.setText(show);
  }
 }


/**
*=====数字运算函数A=====
*/
private void mathProgressA(String s)
 {if (show==null) {sum=0;}
  else {sum=Double.valueOf(show).doubleValue();}
  isCMD=false;
  show=null;
 }

/**
*=====数字运算函数B=====
*/
private void mathProgressB(String s)
 {if (show!=null) {ima=Double.valueOf(show).doubleValue();last=ima;}
  if (start) last=ima;
  if (s=="+")
    {if (show==null&&deng==true) 
 	   {suanfa=1;
        if (start) {sum=Double.valueOf(text.getText()).doubleValue();last=sum;sum+=sum;start=false;}
        else sum+=last;
	   }
	 if (show!=null&&deng!=true) 
		{if (suanfa==3) temp=0;
		 suanfa=2;sum+=temp+ima;temp=sum;}
     if (show!=null&&deng==true) 
		{if (suanfa==2) sum+=temp+ima;
		 else sum+=ima;
		 suanfa=3;
		 if (temp!=0) start=false;
		 else start=true;
		 temp=sum;}
    }
  if (s=="-")
    {if (show==null&&deng==true) 
 	   {suanfa=1;
        if (start) {sum=Double.valueOf(text.getText()).doubleValue();last=sum;sum-=sum;start=false;}
        else sum-=last;
	   }
	 if (show!=null&&deng!=true) 
		{if (suanfa==3) temp=0;
		 suanfa=2;sum-=ima;temp=sum;}
     if (show!=null&&deng==true) 
		{sum-=ima;
		 suanfa=3;
		 if (temp!=0) start=false;
		 else start=true;
		 temp=sum;}
     }
  if (s=="*")
    {if (show==null&&deng==true) 
 	   {suanfa=1;
        if (start) {sum=Double.valueOf(text.getText()).doubleValue();last=sum;sum*=sum;start=false;}
        else sum*=last;
	   }
	 if (show!=null&&deng!=true) 
		{if (suanfa==3) temp=0;
		 suanfa=2;sum*=ima;temp=sum;}
     if (show!=null&&deng==true) 
		{sum*=ima;
		 suanfa=3;
		 if (temp!=0) start=false;
		 else start=true;
		 temp=sum;}
     }
  if (s=="/")
     {if (show==null&&deng==true) 
 	   {suanfa=1;
        if (start) {sum=Double.valueOf(text.getText()).doubleValue();last=sum;sum/=last;start=false;}
        else sum/=last;
	   }
	  if (show!=null&&deng!=true) 
	 	 {if (suanfa==3) temp=0;
	  	  suanfa=2;sum/=ima;temp=sum;}
      if (show!=null&&deng==true) 
		 {sum/=ima;
		  suanfa=3;
		  if (temp!=0) start=false;
		  else start=true;
		  temp=sum;}
      show=""+sum;
     }
 
  show=""+sum;
  if (sum%1==0) show=show.substring(0,show.length()-2);
  if ((suanfa==2||suanfa==3)&&s=="/"&&ima==0||show.equals("Infinity")) {show="Error";error=true;}
  text.setText(show);result=true;
  if (suanfa==2) {start=false;}
  if (suanfa==3) {ima=0;suanfa=0;}
  if (isCMD==true) start=true;
  show=null;isCMD=false;
  if (deng=true) {deng=false;}
 }

/**
*=====此函数判断是字符串否是带符号和小数点的数字=====
*/
public boolean isNumeric(String str)
{Pattern pattern = Pattern.compile("[0-9]*");
 Matcher isNum = pattern.matcher(str);
 Pattern pattern2 = Pattern.compile(".*");
 Matcher isNum2 = pattern2.matcher(str);
 Pattern pattern3 = Pattern.compile("-*");
 Matcher isNum3 = pattern3.matcher(str);
 if (isNum.matches()||isNum2.matches()||isNum3.matches()) return true;
 else return false;
} 

/**
*包含显示屏的容器a
*/
private JPanel getPanela()
{panela=new JPanel();
 text=new JTextField("0",21);
 text.setEditable(false);
 text.setHorizontalAlignment(JTextField.RIGHT);
 panela.add(text);
 return panela;
}

/**
*包含存储空间,退格和清0按钮的容器e
*/
private JPanel getPanele()
{panele=new JPanel();
 panele.setLayout(new GridLayout(1,4,6,4));
 cacheText=new JTextField("存数区域");
 cacheText.setFont(cacheText.getFont().deriveFont(Font.BOLD));

 /**
 *退格键
 */
 back=new JButton("←");
 back.addActionListener
  (new java.awt.event.ActionListener() 
   {public void actionPerformed(java.awt.event.ActionEvent e) 
	  {if (isCMD==false&&error==false&&result==false)
	    {if (show==null) {show="0";}
	      if (show.length()==1&&sign=="+"||show.length()==2&&sign=="-") {show="0";}
	      else {show=show.substring(0,show.length()-1);}
		 if (show.substring(show.length()-1,show.length()).equals(".")) {show=""+show.substring(0,show.length()-1);}
         text.setText(show);
        }
	  }
   }
  );

  /*  当前数清0  */
  c=new JButton("C");
  c.addActionListener
  (new java.awt.event.ActionListener() 
   {public void actionPerformed(java.awt.event.ActionEvent e) 
	{show=null;sign="+";error=false;isDOT=false;
     text.setText("0");
    }
   }
  );

  /*  全体清0  */
 ac=new JButton("AC");
 ac.addActionListener
 (new java.awt.event.ActionListener() 
  {public void actionPerformed(java.awt.event.ActionEvent e) 
    {show=null;sign="+";error=false;isCMD=false;isDOT=false;last=0;ima=0;CMD=null;sum=0;start=true;result=false;temp=0;suanfa=0;
     text.setText("0");
    }
  }
 );

 /*上端按纽组加完*/
 panele.add(cacheText);
 panele.add(back);
 panele.add(c);
 panele.add(ac);
 return panele;
}


private JPanel getPaneld()
{/*包含根号,平方,倒数,正负号的容器*/
 paneld=new JPanel();
 paneld.setLayout(new GridLayout(4,1,4,4));

 /*根号*/
 bsqrt=new JButton("sqrt");
 bsqrt.addActionListener
 (new java.awt.event.ActionListener() 
   {public void actionPerformed(java.awt.event.ActionEvent e) 
    {if(error==false)
    	{ima=Double.valueOf(text.getText()).doubleValue();
	     if (ima==0) {text.setText("0");isCMD=true;}
	     else {if (ima<0){text.setText("Error");error=true;isCMD=true;}
	           else {isCMD=true;ima=Math.sqrt(ima);
                     show=""+ima;
                     if (ima%1==0) show=show.substring(0,show.length()-2);
	                 text.setText(show);
	                }
	          }
	     if (ima==0) isCMD=false;
		}
	   deng=true;
	   }
     }
  );
  
  /*平方*/
  bpf=new JButton("x×x");
  bpf.addActionListener
  (new java.awt.event.ActionListener() 
   {public void actionPerformed(java.awt.event.ActionEvent e) 
	{if(error==false)
		{ima=Double.valueOf(text.getText()).doubleValue();
	     if (ima==0) {text.setText("0");isCMD=true;}
	     else {isCMD=true;ima*=ima;
               show=""+ima;
               if (ima%1==0) show=show.substring(0,show.length()-2);
		       text.setText(show);
		      }
	     if (ima==0) isCMD=false;
		}
	deng=true;
	}
   }
  );
  
   /*倒数*/
  bds=new JButton("1/x");
  bds.addActionListener
  (new java.awt.event.ActionListener() 
     {public void actionPerformed(java.awt.event.ActionEvent e) 
	     {if(error==false) 
	        {ima=Double.valueOf(text.getText()).doubleValue();
	         if (ima==0) {text.setText("Error");error=true;isCMD=true;}
	         else {isCMD=true;ima=1/ima;
                   show=""+ima;
                   if (ima%1==0) show=show.substring(0,show.length()-2);
		           text.setText(show);
		          }
	        }
		 deng=true;
	     }
     }
  );

   /*正负号*/
  bf=new JButton("+/-");
  bf.addActionListener
  (new java.awt.event.ActionListener() 
   {public void actionPerformed(java.awt.event.ActionEvent e) 
	{show=text.getText();
	 if (!show.equals("0")&&show!=null&&error==false)
	      {if (Double.valueOf(show).doubleValue()>=0) {sign="-";show="-"+show;} 
		   else {if (sign=="-"||Double.valueOf(show).doubleValue()<=0) {sign="+";show=show.substring(1,show.length());}}
		   text.setText(show);
	      }
	deng=true;
	}
   }
  );

  /*左端按纽组加完*/

⌨️ 快捷键说明

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