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

📄 calculator.java

📁 用java实现的一个计算器代码
💻 JAVA
字号:
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Calculator extends JFrame implements ActionListener{
	
	private boolean isFloat;
  	private String OperatorCurrent,OperatorPre;
  	private String ForeScreen,BackScreen;
  	private boolean flag = false;
  	
	private JPanel displayPanel;
	private JPanel p1;
	private JPanel functionPanel;
	private JPanel inputPanel;
	private Container container;
	private JTextField result;
	public Calculator()
	{
	isFloat	=false;
	OperatorCurrent = new String("");
  	OperatorPre = new String("");
  	ForeScreen = new String("");
  	BackScreen = new String("");
	container = getContentPane();
	container.setLayout(new BorderLayout());
	displayPanel = new JPanel();
	displayPanel.setLayout(new BorderLayout());
	result = new JTextField();
	displayPanel.add(result,BorderLayout.CENTER);
	container.add(displayPanel,BorderLayout.NORTH);
	functionPanel = new JPanel();
	functionPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
	JButton back=new JButton("Back");
	JButton ce=new JButton("CE");
	JButton c=new JButton("C");
	JButton jbt7=new JButton("7");
	JButton jbt8=new JButton("8");
	JButton jbt9=new JButton("9");
	JButton jbtc=new JButton("/");
	JButton jbts=new JButton("sqrt");
	JButton jbt4=new JButton("4");
	JButton jbt5=new JButton("5");
	JButton jbt6=new JButton("6");
	JButton jbtm=new JButton("*");
	JButton jbty=new JButton("%");
	JButton jbt1=new JButton("1");
	JButton jbt2=new JButton("2");
	JButton jbt3=new JButton("3");
	JButton jbtr=new JButton("-");
	JButton jbtd=new JButton("1/x");
	JButton jbt0=new JButton("0");
	JButton jbtf=new JButton("+/-");
	JButton jbtdi=new JButton(".");
	JButton jbtj=new JButton("+");
	JButton jbtde=new JButton("=");
	
	functionPanel.add(back);
	functionPanel.add(ce);
	functionPanel.add(c);
	p1=new JPanel();
	p1.setLayout(new BorderLayout());
	p1.add(functionPanel,BorderLayout.NORTH);
	inputPanel=new JPanel();
	inputPanel.setLayout(new GridLayout(4,5));
	inputPanel.add(jbt7);
	inputPanel.add(jbt8);
	inputPanel.add(jbt9);
	inputPanel.add(jbtc);
	inputPanel.add(jbts);
	inputPanel.add(jbt4);
	inputPanel.add(jbt5);
	inputPanel.add(jbt6);
	inputPanel.add(jbtm);
	inputPanel.add(jbty);
	inputPanel.add(jbt1);
	inputPanel.add(jbt2);
	inputPanel.add(jbt3);
	inputPanel.add(jbtr);
	inputPanel.add(jbtd);
	inputPanel.add(jbt0);
	inputPanel.add(jbtf);
	inputPanel.add(jbtdi);
	inputPanel.add(jbtj);
	inputPanel.add(jbtde);
	p1.add(inputPanel,BorderLayout.CENTER);
	container.add(p1,BorderLayout.CENTER);
	
	back.addActionListener(this);
	ce.addActionListener(this);
	c.addActionListener(this);
	jbt7.addActionListener(this);
	jbt8.addActionListener(this);
	jbt9.addActionListener(this);
	jbtc.addActionListener(this);
	jbts.addActionListener(this);
	jbt4.addActionListener(this);
	jbt5.addActionListener(this);
	jbt6.addActionListener(this);
	jbtm.addActionListener(this);
	jbty.addActionListener(this);
	jbt1.addActionListener(this);
	jbt2.addActionListener(this);
	jbt3.addActionListener(this);
	jbtr.addActionListener(this);
	jbtd.addActionListener(this);
	jbt0.addActionListener(this);
	jbtf.addActionListener(this);
	jbtdi.addActionListener(this);
	jbtj.addActionListener(this);
	jbtde.addActionListener(this);
	}
	public static void main(String[] args){
		Calculator test=new Calculator();
		test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   	 	test.setSize(350,350);
    	test.setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e)
  	{
  		String s = new String("");
  		String op = s;
  		s = e.getActionCommand();
  		if((s.compareTo("0")==0)||(s.compareTo("1")==0)||(s.compareTo("2")==0)||(s.compareTo("3")==0)||(s.compareTo("4")==0)||(s.compareTo("5")==0)||(s.compareTo("6")==0)||(s.compareTo("7")==0)||(s.compareTo("8")==0)||(s.compareTo("9")==0)||(s.compareTo(".")==0))
  			if(s.compareTo(".")!=0)
  			{
  				if(!flag)
  				{
  					ForeScreen  += s;	
  					result.setText(ForeScreen);
  				}
  				else
  				{
  					ForeScreen = "";
  					result.setText(s);
  					flag = false;
  				}
  			}
  			else
  			{
  				if((s.compareTo(".")==0)&&isFloat==false)
  				{
  					isFloat = true;
  					if(ForeScreen.equals(""))
  						ForeScreen+= "0." ;
  					else
  					{
  						ForeScreen += s; 
  						result.setText(ForeScreen);
  					}
  				}
  			}
  		
  	
  		if((s.compareTo("/")==0)||(s.compareTo("*")==0)||(s.compareTo("+")==0)||(s.compareTo("-")==0)||(s.compareTo("%")==0))
  		{
  			flag = true;
  			if(!result.getText().equals(""))
  			{ 
  				OperatorCurrent = s;
  				calculatea();		
  			}
  			else
  				OperatorPre = s;
  			
  		}
  		if((s.compareTo("1/x")==0)||(s.compareTo("sqrt")==0))
  		{
  			if(!result.getText().equals(""))
  			{
				op = s;
  				calculateb(op);
  			}
  			
  		}	
  		if((s.compareTo("+/-")==0))
  		{
  			double Num;
  			Num = Double.parseDouble(result.getText());
  			if(result.getText().compareTo("")!=0)
  			{
	  			if(Num>0)
	  			{
	  				Num = 0 - Num;
	  				ForeScreen = Double.toString(Num);
	  				result.setText(ForeScreen);
	  			}
	  			else
	  				if(Num<0)
		  			{
		  				Num = 0-Num;
		  				ForeScreen = Double.toString(Num);
		  				result.setText(ForeScreen);
		  			}
		  			else
		  			{
		  				s = new String("0");
		  				result.setText(s);
		  			}
	  		}
  		}
  				
  		if((s.compareTo("Back")==0))
  		{
  			String str = new String("");
  			if(result.getText().compareTo("0")!=0)
  			{
  				str = result.getText();
  				ForeScreen = new String("");
  				for(int i = 0;i<str.length()-1;i++)
  				{
  					ForeScreen += str.charAt(i) ;
  				}
  				if(ForeScreen.compareTo("")==0)
  				{
  					s = new String("0");
  					result.setText(s);
  				}
  				else
  					result.setText(ForeScreen);
  			}
  			else
  			{
  				s = new String("0");
  				result.setText(s);
  			}
  		}
  				
	  	if((s.compareTo("CE")==0))
	  	{
	  	
	  		s = new String("0");
	  		ForeScreen = new String("");
	  		result.setText(s);
	  	}
	  			
	    if((s.compareTo("C")==0))
	  	{
	  	
	  		s = new String("0");
	  		ForeScreen = new String("");
	  		BackScreen = new String("");
	  		OperatorCurrent = new String("");
	  		OperatorPre = new String("");
	  		isFloat = false;
	  		result.setText(s);
	  	}
	    if((s.compareTo("=")==0))
	  	{				
	 		if(OperatorPre.equals("+")||OperatorPre.equals("-")||OperatorPre.equals("*")||OperatorPre.equals("/")||OperatorPre.equals("%"))
	  		{
	  			
	  			calculatea();
	  			OperatorPre = new String("");
	  				
	  		}
	  		
	  		 else
	  			calculateb(op);	
	  	}
	  	}
	  	
  	public void calculateb(String s)
  	{
  		double dFore,d1;
  		if(s.equals("sqrt"))                                                                                                                                                                                                                                                                                               
  		{
  			dFore = Double.parseDouble(result.getText());
  			if(result.getText().charAt(0)=='-')
  			{
  				result.setText("负数没有平方根,请重新输入数据!");
  				ForeScreen = new String("");
  			}
  			else
  			{
  				d1 = Math.sqrt(dFore);
	  			ForeScreen = Double.toString(d1);
	  			result.setText(ForeScreen);
  			}
  		}
  		if(s.equals("1/x"))
  		{
  			dFore = Double.parseDouble(result.getText());
  			if(result.getText().equals("0"))
  			{
  				result.setText("分母不能为0,请重新输入数据!");
  				ForeScreen = new String("");
  			}
  			else
  			{
  				d1 = (double)(1.0/dFore);
  				ForeScreen = Double.toString(d1);
  				result.setText(ForeScreen);
  			}
  					
  		}
  		
  	}
  	
  	
  	
  	public void calculatea()
  	{
  		double NumBack,NumFore,d;
  		if(OperatorPre.equals(""))
  		{
  			BackScreen = result.getText();	
  			ForeScreen = new String("");
  			result.setText(BackScreen);
  			OperatorPre = OperatorCurrent;
  		}
  		else
  		{
  			if(!flag)
  			{
	  			NumBack = Double.parseDouble(BackScreen);
	  			NumFore = Double.parseDouble(result.getText());
	  			BackScreen = result.getText();
	  			ForeScreen = "";
	  			if(OperatorPre.compareTo("+")==0)
	  			{
	  				d = (double)(NumBack + NumFore);
	  				BackScreen = Double.toString(d);
	  				System.out.print(d);
	  				result.setText(BackScreen);
	  			}
	  		  	if(OperatorPre.compareTo("-")==0)
	 			{
 					d = NumBack - NumFore;
	  				BackScreen = Double.toString(d);
	  				result.setText(BackScreen);
	  			}
	  			
	  			if(OperatorPre.compareTo("*")==0)
		  		{
		  			d = NumBack * NumFore;
		  			BackScreen = Double.toString(d);
		  			result.setText(BackScreen);
		  		}
		  		if(OperatorPre.compareTo("/")==0)
				{
					if(result.getText().equals("0"))
					{
						result.setText("除数不能为0,请重新输入!");
					}
					else
					{
				  		d = (double)(NumBack / NumFore);
				 		BackScreen = Double.toString(d);
				  		result.setText(BackScreen);
				  	}
				}
				  
				if(OperatorPre.compareTo("%")==0)
				{
	  				if(result.getText().equals("0"))
	  				{
	  					result.setText("不能为负数,请重新输入数据!");
	  					ForeScreen = new String("");
		  			}
	  				else
	  				{
	  					int i = (int)(NumBack / NumFore);
	  					d = (double)(NumBack / NumFore);
	  					i = (int)d-i;
	  					BackScreen = Double.toString(i);
				  		result.setText(BackScreen);
	  				}
				}		
					
			}
				OperatorPre = OperatorCurrent;
				
 	   }
   }
  }



  	


⌨️ 快捷键说明

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