calc

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Calc extends Applet implements ActionListener
{
    Label result;
    Panel knoppen;
    Proc  proc;

    public void init()
    {   Button knop;
        String opschrift;
       
        proc    = new Proc();
        result  = new Label( "0", Label.RIGHT );
        knoppen = new Panel();
        result.setFont( new Font("Arial", Font.BOLD, 20) );

        this.   setLayout( new BorderLayout() );
        knoppen.setLayout( new GridLayout(4,4,6,6) );  
        for (int n=0; n<16; n++)
        {   opschrift = "789/456*123+0C=-".substring(n,n+1);
            knop      = new Button(opschrift);
            knop.addActionListener(this);
            knoppen.add( knop );
        }
        this.add(result , BorderLayout.NORTH );
        this.add(knoppen, BorderLayout.CENTER);
    }

    public void actionPerformed(ActionEvent e)
    {
        Button b; char c;
        b = (Button) (e.getSource());
        c = b.getLabel().charAt(0);

        if      (c=='C')         proc.schoon();
        else if (c=='=')         proc.reken();
        else if (c>='0'&&c<='9') proc.cijfer( c-'0' );
        else                     proc.operatie(c);
        result.setText( ""+proc.scherm );
    }
}
/**
*
*/
class Proc
{
    long waarde, vorige, scherm;
    char operator;

    Proc()
    {
        schoon();
    }

    void schoon()
    {
        waarde = 0;
        vorige = 0;
        operator = '+';
        scherm = 0;
    }

    void reken()
    {  
        switch(operator)
        {
            case '+': vorige += waarde; break;
            case '-': vorige -= waarde; break;
            case '*': vorige *= waarde; break;
            case '/': vorige /= waarde; break;
        }
        scherm = vorige;
        waarde = 0;
    }

    void cijfer(int n)
    {
        waarde = 10*waarde+n;
        scherm = waarde;
    }

    void operatie(char c)
    {
        reken();
        operator = c;
    }
}

两个类,实现简单的计算器,值得学习,上GOOGLE搜的,还很不错的,我现在肯定写不出来的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值