java只要awt类的计算器,JAVA编程题(AWT计算器)

这个博客展示了如何使用Java创建一个基本的计算器应用程序。它包括数字按钮、运算符按钮、小数点、正负号、退格、求倒数、等号和清零功能。用户界面使用了GridLayout布局管理器,并实现了ActionListener来处理按钮点击事件。
摘要由CSDN通过智能技术生成

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.*;

import java.util.LinkedList;       //工具包

import java.text.NumberFormat;     //文本包

public class Calculator extends Frame implements ActionListener       //计算器类

{

JTextField result;

NumberButton numberButton[];

OperatorButton operatorButton[];

Button radixpoint,positiveminus,backspace,reciprocal,equal,clear; //声明成员变量

//小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮

Panel panel;

String operator[]={"+","-","*","/"};

LinkedList linklist;

boolean pressequal=false;

public Calculator()          //构造方法

{

super("计算器");

linklist=new LinkedList();

numberButton=new NumberButton[10];

for(int i=0;i<=9;i++)

{

numberButton[i]=new NumberButton(i);

numberButton[i].addActionListener(this);

}

operatorButton=new OperatorButton[4];

for(int i=0;i<4;i++)

{

operatorButton[i]=new OperatorButton(operator[i]);

operatorButton[i].addActionListener(this);

}

radixpoint=new Button(".");

positiveminus=new Button("+/-");

backspace=new Button("CE");

reciprocal=new Button("1/x");

equal=new Button("=");

clear=new Button("C");

radixpoint.setForeground(Color.red);

positiveminus.setForeground(Color.red);

backspace.setForeground(Color.red);

reciprocal.setForeground(Color.red);

equal.setForeground(Color.red);

clear.setForeground(Color.red);

radixpoint.addActionListener(this);

positiveminus.addActionListener(this);

backspace.addActionListener(this);

reciprocal.addActionListener(this);

equal.addActionListener(this);

clear.addActionListener(this);

result=new JTextField(10);

result.setHorizontalAlignment(JTextField.RIGHT);

result.setForeground(Color.black);

result.setBackground(Color.white);

result.setFont(new Font("TimesRoman",Font.PLAIN,14));

result.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));

result.setEditable(false);

panel=new Panel();

panel.setLayout(new GridLayout(4,5));

panel.add(numberButton[1]);

panel.add(numberButton[2]);

panel.add(numberButton[3]);

panel.add(backspace);

panel.add(clear);

panel.add(numberButton[4]);

panel.add(numberButton[5]);

panel.add(numberButton[6]);

panel.add(operatorButton[0]);

panel.add(operatorButton[2]);

panel.add(numberButton[7]);

panel.add(numberButton[8]);

panel.add(numberButton[9]);

panel.add(operatorButton[1]);

panel.add(operatorButton[3]);

panel.add(numberButton[0]);

panel.add(positiveminus);

panel.add(reciprocal);

panel.add(radixpoint);

panel.add(equal);

add(result,"North");

add(panel,"Center");

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

setSize(270,200);

setLocation(300,230);

setVisible(true);

}

public void actionPerformed(ActionEvent e)   //按钮的单击事件处理方法

{

if(e.getSource() instanceof NumberButton)      //数字按钮

{

NumberButton b=(NumberButton)e.getSource();

if(linklist.size()==0)

{

int number=b.getNumber();

linklist.add(""+number);

result.setText(""+number);

pressequal=false;

}

else if(linklist.size()==1&&pressequal==false)

{

int number=b.getNumber();

String num=(String)linklist.getFirst();

String s=num.concat(""+number);

linklist.set(0,s);

result.setText(s);

}

else if(linklist.size()==1&&pressequal==true)

{

int number=b.getNumber();

linklist.removeFirst();

linklist.add(""+number);

pressequal=false;

result.setText(""+number);

}

else if(linklist.size()==2)

{

int number=b.getNumber();

linklist.add(""+number);

result.setText(""+number);

}

else if(linklist.size()==3)

{

int number=b.getNumber();

String num=(String)linklist.getLast();

String s=num.concat(""+number);

linklist.set(2,s);

result.setText(s);

}

}

else if(e.getSource() instanceof OperatorButton)  //操作按钮

{

OperatorButton b=(OperatorButton)e.getSource();

if(linklist.size()==1)

{

String fuhao=b.getOperator();

linklist.add(fuhao);

}

else if(linklist.size()==2)

{

String fuhao=b.getOperator();

linklist.set(1,fuhao);

}

else if(linklist.size()==3)

{

String fuhao=b.getOperator();

String number1=(String)linklist.getFirst();

String number2=(String)linklist.getLast();

String operator=(String)linklist.get(1);

try

{

double n1=Double.parseDouble(number1);

double n2=Double.parseDouble(number2);

double n=0;

if(operator.equals("+"))

{

n=n1+n2;

}

else if(operator.equals("-"))

{

n=n1-n2;

}

else if(operator.equals("*"))

{

n=n1*n2;

}

else if(operator.equals("/"))

{

n=n1/n2;

}

linklist.clear();

linklist.add(""+n);

linklist.add(fuhao);

result.setText(""+n);

}

catch(Exception ee)

{

}

}

}

else if(e.getSource()==equal)     //等号按钮

{

pressequal=true;

if(linklist.size()==1||linklist.size()==2)

{

String num=(String)linklist.getFirst();

result.setText(""+num);

}

else if(linklist.size()==3)

{

String number1=(String)linklist.getFirst();

String number2=(String)linklist.getLast();

String operator=(String)linklist.get(1);

try

{

double n1=Double.parseDouble(number1);

double n2=Double.parseDouble(number2);

double n=0;

if(operator.equals("+"))

{

n=n1+n2;

}

else if(operator.equals("-"))

{

n=n1-n2;

}

else if(operator.equals("*"))

{

n=n1*n2;

}

else if(operator.equals("/"))

{

n=n1/n2;

}

result.setText(""+n);

linklist.set(0,""+n);

linklist.removeLast();

linklist.removeLast();

}

catch(Exception ee)

{

}

}

}

else if(e.getSource()==radixpoint)          //小数点按钮

{

if(linklist.size()==0)

{

pressequal=false;

}

else if(linklist.size()==1)

{

String dot=radixpoint.getLabel();

String num=(String)linklist.getFirst();

String s=null;

if(num.indexOf(dot)==-1)

{

s=num.concat(dot);

linklist.set(0,s);

}

else

{

s=num;

}

linklist.set(0,s);

result.setText(s);

}

else if(linklist.size()==3)

{

String dot=radixpoint.getLabel();

String num=(String)linklist.getLast();

String s=null;

if(num.indexOf(dot)==-1)

{

s=num.concat(dot);

linklist.set(2,s);

}

else

{

s=num;

}

result.setText(s);

}

}

else if(e.getSource()==backspace)           //退格按钮

{

if(linklist.size()==1)

{

String num=(String)linklist.getFirst();

if(num.length()>=1)

{

num=num.substring(0,num.length()-1);

linklist.set(0,num);

result.setText(num);

}

else

{

linklist.removeLast();

result.setText("0");

}

}

else if(linklist.size()==3)

{

String num=(String)linklist.getLast();

if(num.length()>=1)

{

num=num.substring(0,num.length()-1);

linklist.set(2,num);

result.setText(num);

}

else

{

linklist.removeLast();

result.setText("0");

}

}

}

else if(e.getSource()==positiveminus)            //正负号按钮

{

if(linklist.size()==1)

{

String number1=(String)linklist.getFirst();

try

{

double d=Double.parseDouble(number1);

d=-1*d;

String str=String.valueOf(d);

linklist.set(0,str);

result.setText(str);

}

catch(Exception ee)

{

}

}

else if(linklist.size()==3)

{

String number2=(String)linklist.getLast();

try

{

double d=Double.parseDouble(number2);

d=-1*d;

String str=String.valueOf(d);

linklist.set(2,str);

result.setText(str);

}

catch(Exception ee)

{

}

}

}

else if(e.getSource()==reciprocal)           //求倒数按钮

{

if(linklist.size()==1||linklist.size()==2)

{

String number1=(String)linklist.getFirst();

try

{

double d=Double.parseDouble(number1);

d=1.0/d;

String str=String.valueOf(d);

linklist.set(0,str);

result.setText(str);

}

catch(Exception ee)

{

}

}

else if(linklist.size()==3)

{

String number2=(String)linklist.getLast();

try

{

double d=Double.parseDouble(number2);

d=1.0/d;

String str=String.valueOf(d);

linklist.set(0,str);

result.setText(str);

}

catch(Exception ee)

{

}

}

}

else if(e.getSource()==clear)                 //清零按钮

{

pressequal=false;

result.setText("0");

linklist.clear();

}

}

public static void main(String args[])

{

new Calculator();

}

}

class NumberButton extends Button        //数字按钮类

{

int number;

public NumberButton(int number)     //构造方法

{

super(""+number);

this.number=number;

setForeground(Color.blue);

}

public int getNumber()

{

return number;

}

}

class OperatorButton extends Button      //运算符号按钮类

{

String operator;

public OperatorButton(String operator)           //构造方法

{

super(operator);

this.operator=operator;

setForeground(Color.red);

}

public String getOperator()

{

return operator;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值