欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android计算器简单逻辑实现实例分享

程序员文章站 2023-11-14 08:34:04
引言:   我的android计算器的实现方式是:按钮输入一次,就处理一次。   但是如果你学过数据结构(栈),就可以使用表达式解析(前缀,后缀)处理。   而这个方...

引言:

  我的android计算器的实现方式是:按钮输入一次,就处理一次。

  但是如果你学过数据结构(栈),就可以使用表达式解析(前缀,后缀)处理。

  而这个方式已经很成熟了,但是时间有限,只完成了这个简单的计算器。

  至于,这个android的布局已经在我博客中发布了,不再讲述。    

复制代码 代码如下:

package com.example.androidlessontwo;

import android.os.bundle;
import android.app.activity;
import android.view.menu;
import android.view.view;
import android.widget.button;
import android.widget.textview;

public class mainactivity extends activity  {

    private button[] buttonnum=new button[11];
    private button[] buttoncomand=new button[5];
    private textview input=null;
    private textview rl=null;
    private button   buttonclear=null;
    private boolean firstflag=true;
    private double result=0.0;
    private string lastcommand;

    public void mycalculator()
    {
        result = 0.0;
        firstflag=true;
        lastcommand="=";
    }
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
        buttonnum[0]=(button) findviewbyid(r.id.num0);
        buttonnum[1]=(button) findviewbyid(r.id.num1);
        buttonnum[2]=(button) findviewbyid(r.id.num2);
        buttonnum[3]=(button) findviewbyid(r.id.num3);
        buttonnum[4]=(button) findviewbyid(r.id.num4);
        buttonnum[5]=(button) findviewbyid(r.id.num5);
        buttonnum[6]=(button) findviewbyid(r.id.num6);
        buttonnum[7]=(button) findviewbyid(r.id.num7);
        buttonnum[8]=(button) findviewbyid(r.id.num8);
        buttonnum[9]=(button) findviewbyid(r.id.num9);
        buttonnum[10]=(button) findviewbyid(r.id.point);

        buttoncomand[0]=(button) findviewbyid(r.id.add);
        buttoncomand[1]=(button) findviewbyid(r.id.sub);
        buttoncomand[2]=(button) findviewbyid(r.id.ride);
        buttoncomand[3]=(button) findviewbyid(r.id.divide);
        buttoncomand[4]=(button) findviewbyid(r.id.equal);

        input=(textview) findviewbyid(r.id.input);
        rl   =(textview) findviewbyid(r.id.rl);
        buttonclear=(button) findviewbyid(r.id.clean);

        numberaction na= new numberaction();
        commandaction ca=new commandaction();
        for(button bc:buttoncomand)
        {
            bc.setonclicklistener(ca);
        }
        for(button bc:buttonnum)
        {
            bc.setonclicklistener(na);
        }
        buttonclear.setonclicklistener(new button.onclicklistener()
        {

            @override
            public void onclick(view v) {
                mycalculator();
                rl.settext("0.0");
            }
        });
    }
    @override
    public boolean oncreateoptionsmenu(menu menu) {
        // inflate the menu; this adds items to the action bar if it is present.
        getmenuinflater().inflate(r.menu.main, menu);
        return true;
    }
    private class numberaction implements button.onclicklistener
    {

        @override
        public void onclick(view view)
        {
            button btn = (button)view;
            string inputtemp =btn.gettext().tostring();//6
            input.settext(input.gettext().tostring()+inputtemp);   
            double numtemp = 0;
            switch(btn.getid())
            {
                case r.id.num0:
                {
                    if(firstflag)
                        {
                            result=result*10+0;
                            firstflag=false;
                        }
                    else
                        numtemp=numtemp*10+0;
                    break;
                }
                case r.id.num1:
                {
                    if(firstflag)
                        {
                        result=result*10+1;
                            firstflag=false;
                        }
                    else
                        numtemp=numtemp*10+1;
                    break;
                }
                case r.id.num2:
                {
                    if(firstflag)
                        {
                        result=result*10+2;
                            firstflag=false;
                        }
                    else
                        numtemp=numtemp*10+2;
                    break;
                }
                case r.id.num3:
                {
                    if(firstflag)
                        {
                        result=result*10+3;
                            firstflag=false;
                        }
                    else
                        numtemp=numtemp*10+3;
                    break;
                }
                case r.id.num4:
                {
                    if(firstflag)
                        {
                        result=result*10+4;
                            firstflag=false;
                        }
                    else
                        numtemp=numtemp*10+4;
                    break;
                }
                case r.id.num5:
                {
                    if(firstflag)
                        {
                        result=result*10+5;
                            firstflag=false;
                        }
                    else
                        numtemp=numtemp*10+5;
                    break;
                }
                case r.id.num6:
                {
                    if(firstflag)
                        {
                        result=result*10+6;
                            firstflag=false;
                        }
                    else
                        {
                            numtemp=numtemp*10+6;
                            calculate(numtemp);
                        }
                    break;
                }
                case r.id.num7:
                {
                    if(firstflag)
                        {
                            result=result*10+7;
                            firstflag=false;
                        }
                    else
                    {
                        numtemp=numtemp*10+7;
                        calculate(numtemp);
                    }
                    break;
                }
                case r.id.num8:
                {
                    if(firstflag)
                        {
                        result=result*10+8;
                            {
                                result=result*10+8;
                                firstflag=false;
                            }
                        }
                    else
                        {
                            numtemp=numtemp*10+8;
                            calculate(numtemp);
                        }
                    break;
                }
                case r.id.num9:
                {
                    if(firstflag)
                        {
                        result=result*10+9;
                            firstflag=false;
                        }
                    else
                        {
                            numtemp=numtemp*10+9;
                            calculate(numtemp);
                        }
                    break;
                }   
            }           

           

           
        }

    }

    private class commandaction implements button.onclicklistener
    {
        @override
        public void onclick(view v)
        {
            button btn=(button)v;
            string inputcommand=(string)btn.gettext();
            switch(btn.getid())
            {
                case r.id.add:
                {
                    lastcommand="+";
                    break;
                }
                case r.id.sub:
                {
                    lastcommand="-";
                    break;
                }
                case r.id.ride:
                {
                    lastcommand="*";
                    break;
                }
                case r.id.divide:
                {
                    lastcommand="/";
                    break;
                }
                case r.id.equal:
                {
                    lastcommand="=";
                    input.settext("");
                    rl.settext(string.valueof(result));
                    return ;
                }

            }
            input.settext(input.gettext()+inputcommand);   
        }

    }
    private void calculate(double x)
    {

       
         if(lastcommand.equals("+"))
            {
                result += x;
            }

         if(lastcommand.equals("-"))
            {
                result -= x;
            }

         if(lastcommand.equals("*"))
            {
                result *= x;
            }

         if(lastcommand.equals("/"))
            {
                result /= x;
            }
    }

}