源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-06-15 06:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android计算器简单逻辑实现实例分享
引言:   我的android计算器的实现方式是:按钮输入一次,就处理一次。   但是如果你学过数据结构(栈),就可以使用表达式解析(前缀,后缀)处理。   而这个方式已经很成熟了,但是时间有限,只完成了这个简单的计算器。   至于,这个Android的布局已经在我博客中发布了,不再讲述。    
[u]复制代码[/u] 代码如下:
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;             }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部