当前位置: 移动技术网 > IT编程>移动开发>Android > Android计算器简单逻辑实现实例分享

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

灵狐者裙底h,不知火舞漫画,网上买票提前几天

引言:

  我的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;
            }
    }

}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网