当前位置:  编程技术>移动开发

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

    来源: 互联网  发布时间:2014-10-23

    本文导语:  引言:   我的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;
            }
    }

}


    
 
 

您可能感兴趣的文章:

  • Android 房贷计算器 houseloan
  • IT科技资讯 iis7站长之家
  • 从零开始学android实现计算器功能示例分享(计算器源码)
  • android计时器,时间计算器的实现方法
  • Android瀑布流实例 android_waterfall
  • Android的OpenGL编程实例 Android-GL
  • android 简单图片动画播放的实例代码
  • android WakeLock使用方法代码实例
  • android自动安装apk代码实例(不使用apk安装器安装)
  • android 弹出提示框的使用(图文实例)
  • 控制Android LED灯颜色的代码实例
  • Android中AnimationDrawable使用的简单实例
  • Android中将View的内容保存为图像的简单实例
  • Android入门之LinearLayout、AbsoluteLayout的用法实例讲解
  • android中Bitmap的放大和缩小实例代码
  • android中写一个内部类来选择文件夹中指定的图片类型实例说明
  • 怎样删除android的gallery中的图片实例说明
  • 在Android中 获取正在运行的Service 实例
  • Android根据电话号码获得联系人头像实例代码
  • Android调用默认浏览器打开指定Url的方法实例
  • android双缓冲技术实例详解
  • ANDROID 完美退出APP的实例代码
  • Android对sdcard扩展卡文件操作实例详解
  • Android 清除SharedPreferences 产生的数据(实例代码)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android系统自带样式 (android:theme)
  • Android开发需要的几点注意事项总结
  • Android网络共享软件 Android Wifi Tether
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android 图标库 Android GraphView
  • Android访问与手机通讯相关类的介绍
  • 轻量级Android开发工具 Android Tools
  • Android及andriod无线网络Wifi开发的几点注意事项
  • Android 开发环境 Android Studio
  • Android 2.3 下StrictMode介绍
  • IDEA的Android开发插件 idea-android
  • Android手机事件提醒 Android Notifier
  • XBMC的Android客户端 android-xbmcremote
  • Android小游戏 Android Shapes
  • Android电池监控 Android Battery Dog
  • android开发:“android:WindowTitle”没有对应项no resource
  • Android 上类似IOS 的开关控件。 Android ToggleButton
  • Android 将 android view 的位置设为右下角的解决方法
  • Android 2D游戏引擎 Android Angle
  • Android的UI工具包 android-ui-utils


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3