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

📄 jisuanqi.java

📁 一个简单的表达式计算器。包含了对负号的处理
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Jisuanqi
{
static Button A[][]=new Button[4][5];
static Frame fra=new Frame("计算器");
static Label lab=new Label("0.0",Label.RIGHT);
public static void main(String args[])
{
fra.setResizable(false);
Label my=new Label("作者:阿立");
my.setSize(260,24);
my.setLocation(3,194);
int i,j;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
{
A[i][j]=new Button();
A[i][j].setSize(45,25);
A[i][j].setLocation(j*53,62+33*i);
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
String s = Integer.toString(j+1+i*3);
A[i][j].setLabel(s);
}
for(i=0;i<4;i++)
for(j=0;j<5;j++)
A[i][j].addActionListener(new MyActLister());
A[0][3].setLabel("C");
A[0][4].setLabel("CE");
A[1][3].setLabel("+");
A[1][4].setLabel("-");
A[2][3].setLabel("*");
A[2][4].setLabel("/");
A[3][0].setLabel("0");
A[3][1].setLabel(".");
A[3][2].setLabel("+-");
A[3][3].setLabel("1/x");
A[3][4].setLabel("=");
fra.setLayout(null);
fra.setSize(260,219);
lab.setSize(255,24);
lab.setLocation(3,30); 
lab.setBackground(Color.cyan); 
fra.add(lab);
fra.add(my);
for(i=0;i<4;i++)
for(j=0;j<5;j++)
fra.add(A[i][j]);
fra.addWindowListener(new WindowClose());
	fra.setVisible(true);
	}
	static class MyActLister implements ActionListener{	
	private static boolean a=true;
	private static String[] str=new String[2];
	private static String[] str1=new String[2];
	private static int t=0;
    public void actionPerformed(ActionEvent e) {
		Button but=(Button)e.getSource();
		if(but==A[0][0])
	    Shuju("1");
		else if(but==A[0][1])
		Shuju("2");
		else if(but==A[0][2])
	    Shuju("3");
		else if(but==A[1][0])
		Shuju("4");
		else if(but==A[1][1])
		Shuju("5");
		else if(but==A[1][2])
		Shuju("6");
		else if(but==A[2][0])
		Shuju("7");
		else if(but==A[2][1])
		Shuju("8");
		else if(but==A[2][2])
		Shuju("9");
		else if(but==A[3][0])
		{
			if(a)
			lab.setText("0");
			else
			lab.setText(lab.getText()+"0");						
		}
	    else if(but==A[0][3])
		{
			int b=lab.getText().length()-1;
			lab.setText(lab.getText().substring(0,b));								
		}
		else if(but==A[0][4])
		{	
		lab.setText("0.0");
		a=true;	
		t=0;
		for(int p=0;p<2;p++)
		{
		str[p]=null;
		str[p]=null;
		}					
		}
		else if(but==A[3][1])
		{ 
			boolean c=true;
			if(lab.getText().charAt(0)=='0')
			a=false;
		  for(int k=0;k<lab.getText().length();k++)
			if(lab.getText().charAt(k)=='.')
			c=false;
			if(c)
			lab.setText(lab.getText()+".");
		}
		else if(but==A[3][2])
		{
		double d;
		d=-Double.parseDouble(lab.getText());
		lab.setText(Double.toString(d));
		}
		else if(but==A[3][3])
		{
		double d;
		d=1/Double.parseDouble(lab.getText());
		lab.setText(Double.toString(d));
		}
		else if(but==A[1][3])
		{
		if(t==0)
		{
		str[0]=lab.getText();
		lab.setText("0.0");
		a=true;
		str1[0]=("+");
		t=1;
		}
		else if(t==1)
		{
		if(str1[0].equals("+"))
		str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(lab.getText()));
		else if(str1[0].equals("-"))
		str[0]=Double.toString(Double.parseDouble(str[0])-Double.parseDouble(lab.getText()));
		else if(str1[0].equals("x"))
		str[0]=Double.toString(Double.parseDouble(str[0])*Double.parseDouble(lab.getText()));
		else
		{
		if(Double.parseDouble(lab.getText())==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[0]=Double.toString(Double.parseDouble(str[0])/Double.parseDouble(lab.getText()));
		}
		lab.setText("0.0");
		a=true;
		str1[0]=("+");
		}
		else if(t==2)
		{
		if(str1[1].equals("/"))
		{
		if(Double.parseDouble(lab.getText())==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[1]=Double.toString(Double.parseDouble(str[1])/Double.parseDouble(lab.getText()));
		}
		else
		str[1]=Double.toString(Double.parseDouble(str[1])*Double.parseDouble(lab.getText()));
		lab.setText("0.0");
		a=true;
		if(str1[0].equals("+"))
		str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(str[1]));
		else if(str1[0].equals("-"))
		str[0]=Double.toString(Double.parseDouble(str[0])-Double.parseDouble(str[1]));
		else if(str1[0].equals("x"))
		str[0]=Double.toString(Double.parseDouble(str[0])*Double.parseDouble(str[1]));
		else
		{
		if(Double.parseDouble(str[1])==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[0]=Double.toString(Double.parseDouble(str[0])/Double.parseDouble(str[1]));
		}
		t=1;
		str1[0]="+";
		}
		}
		else if(but==A[1][4])
		{
		if(t==0)
		{
		str[0]=lab.getText();
		lab.setText("0.0");
		a=true;
		str1[0]=("-");
		t=1;
		}
		else if(t==1)
		{
		if(str1[0].equals("+"))
		str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(lab.getText()));
		else if(str1[0].equals("-"))
		str[0]=Double.toString(Double.parseDouble(str[0])-Double.parseDouble(lab.getText()));
		else if(str1[0].equals("x"))
		str[0]=Double.toString(Double.parseDouble(str[0])*Double.parseDouble(lab.getText()));
		else
		{
		if(Double.parseDouble(lab.getText())==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[0]=Double.toString(Double.parseDouble(str[0])/Double.parseDouble(lab.getText()));
		}
		lab.setText("0.0");
		a=true;
		str1[0]=("-");
		}
		else if(t==2)
		{
		if(str1[1].equals("/"))
		{
		if(Double.parseDouble(lab.getText())==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[1]=Double.toString(Double.parseDouble(str[1])/Double.parseDouble(lab.getText()));
		}
		else
		str[1]=Double.toString(Double.parseDouble(str[1])*Double.parseDouble(lab.getText()));
		lab.setText("0.0");
		a=true;
		if(str1[0].equals("+"))
		str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(str[1]));
		else if(str1[0].equals("-"))
		str[0]=Double.toString(Double.parseDouble(str[0])-Double.parseDouble(str[1]));
		else if(str1[0].equals("x"))
		str[0]=Double.toString(Double.parseDouble(str[0])*Double.parseDouble(str[1]));
		else
		{
		if(Double.parseDouble(str[1])==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[0]=Double.toString(Double.parseDouble(str[0])/Double.parseDouble(str[1]));
		}
		t=1;
		str1[0]="-";
		}
		}
		else if(but==A[2][3])
		{
		if(t==0)
		{
		str[0]=lab.getText();
		lab.setText("0.0");
		a=true;
		str1[0]=("x");
		t++;
		}
		else if(t==1)
		{
		str[1]=lab.getText();
		lab.setText("0.0");
		a=true;
		str1[1]=("x");
		t=2;
		}
		else if(t==2)
		{
		if(str1[1].equals("x"))
		str[1]=Double.toString(Double.parseDouble(str[1])*Double.parseDouble(lab.getText()));
		else
		{
		if(Double.parseDouble(lab.getText())==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[1]=Double.toString(Double.parseDouble(str[1])/Double.parseDouble(lab.getText()));
		}
		lab.setText("0.0");
		a=true;
		str1[1]=("x");
		}
		}
		else if(but==A[2][4])
		{
		if(t==0)
		{
		str[0]=lab.getText();
		lab.setText("0.0");
		a=true;
		str1[0]=("/");
		t++;
		}
		else if(t==1)
		{
		str[1]=lab.getText();
		lab.setText("0.0");
		a=true;
		str1[1]=("/");
		t=2;
		}
		else if(t==2)
		{
		if(str1[1].equals("x"))
		str[1]=Double.toString(Double.parseDouble(str[1])*Double.parseDouble(lab.getText()));
		else
		{
		if(Double.parseDouble(lab.getText())==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[1]=Double.toString(Double.parseDouble(str[1])/Double.parseDouble(lab.getText()));
		}
		a=true;
		lab.setText("0.0");
		str1[1]=("/");
		}
		}
		else
		{
		if(t==1)
		{
		if(str1[0].equals("+"))
		str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(lab.getText()));
		else if(str1[0].equals("-"))
		str[0]=Double.toString(Double.parseDouble(str[0])-Double.parseDouble(lab.getText()));
		else if(str1[0].equals("x"))
		str[0]=Double.toString(Double.parseDouble(str[0])*Double.parseDouble(lab.getText()));
		else
		{
		if(Double.parseDouble(lab.getText())==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[0]=Double.toString(Double.parseDouble(str[0])/Double.parseDouble(lab.getText()));
		}
		lab.setText(str[0]);
		}
		if(t==2)
		{
		{
		if(str1[1].equals("+"))
		str[1]=Double.toString(Double.parseDouble(str[1])+Double.parseDouble(lab.getText()));
		else if(str1[1].equals("-"))
		str[1]=Double.toString(Double.parseDouble(str[1])-Double.parseDouble(lab.getText()));
		else if(str1[1].equals("/"))
		{
		if(Double.parseDouble(lab.getText())==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[1]=Double.toString(Double.parseDouble(str[1])/Double.parseDouble(lab.getText()));
		}
		else
		str[1]=Double.toString(Double.parseDouble(str[1])*Double.parseDouble(lab.getText()));
		}
		{
		if(str1[0].equals("+"))
		str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(str[1]));
		else if(str1[0].equals("-"))
		str[0]=Double.toString(Double.parseDouble(str[0])-Double.parseDouble(str[1]));
		else if(str1[0].equals("x"))
		str[0]=Double.toString(Double.parseDouble(str[0])*Double.parseDouble(str[1]));
		else
		{
		if(Double.parseDouble(str[1])==0.0)
		JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
		else
		str[0]=Double.toString(Double.parseDouble(str[0])/Double.parseDouble(str[1]));
		}
		}
		lab.setText(str[0]);
		}
		}
	}
	    public void Shuju(String m)
	    {
			if(a)
			{lab.setText(m);
			a=false;
			}
			else
			lab.setText(lab.getText()+m);						
		}
	}
	}
	class WindowClose extends WindowAdapter{
  	   public void windowClosing(WindowEvent e) { System.exit(0);}
   }

⌨️ 快捷键说明

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