android开发实例大全_Android开发实例 四则运算计算器 标准体重计算器

更新时间:2019-12-03    来源:php基础    手机版     字体:

【www.bbyears.com--php基础】

Android开发实例 四则运算计算器


先看计算器效果图



【技术】

关于这个计算器的一些技术,其核心是把中缀表达式转化为后缀表达式,这个时候需要使用一个最基础的数据结构――栈。

具体的操作原理可以参考这个博客 http://www.nowamagic.net/librarys/veda/detail/2307

然而,对于这个问题,早在上学期就已经解决了,但是那时候纯粹是为了Accepted HDU 1237 http://acm.hdu.edu.cn/showproblem.php?pid=1237 并没有为了要做出一个真正意义上能用的计算器App。这次开发的时候,直接把当年写的很挫的代码拉了下来用。

Android开发似乎用的都是Java,不得不说这是一种很好的语言,集成了很多很多有用的功能,需要的时候只需调用一下就行,不像C/C++那样,都要自己纯手打。

计算器核心代码

#include
#include
// + 999991
// - 999992
// * 999993
// / 999994
int stack1[1000];
double stack2[1000];
int a[1000], b[1000];
int main()
{
    int i;
    char s[1000];
    while (gets(s))
    {
        if (strlen(s) == 1 && s[0] == '0')break;
        int y = strlen(s);
        s[y] = ' '; s[y + 1] = '\\0';
        int top1 = -1, top2 = -1, q = 1, sum = 0;
        for (i = 0; i'9')) continue;
            else if (s[i] == ' ')a[q] = sum, sum = 0, q++;
            else if (s[i] == '+')a[q] = 999991, q++;
            else if (s[i] == '-')a[q] = 999992, q++;
            else if (s[i] == '*')a[q] = 999993, q++;
            else if (s[i] == '/')a[q] = 999994, q++;
            else if (s[i] >= '0'&&s[i] <= '9') sum = 10 * sum + (s[i] - '0');
        }
        //1到q-1;
        //    for(i=1;i= 999991)
            {
                if (top1 == -1)//栈为空
                {
                    top1++;
                    stack1[top1] = a[i];
                }
                else
                {
                    if (a[i] == 999991 || a[i] == 999992)
                    {
                        while (1)
                        {
                            qq++;
                            b[qq] = stack1[top1];
                            top1--;
                            if (top1 == -1) break;
                        }
                        top1++;
                        stack1[top1] = a[i];
                    }
                    else if (a[i] == 999993 || a[i] == 999994)
                    {
                        while (1)
                        {
                            if (stack1[top1] == 999991 || stack1[top1] == 999992 || top1 == -1) break;
                            qq++;
                            b[qq] = stack1[top1];
                            top1--;
                        }
                        top1++;
                        stack1[top1] = a[i];
                    }
                }
            }
        }
        for (i = top1; i >= 0; i--) qq++, b[qq] = stack1[i];
        for (i = 0; i <= qq; i++)
        {
            if (top2 == -1)
            {
                top2++;
                stack2[top2] = b[i];
            }
            else if (b[i]<999991) top2++, stack2[top2] = b[i];
            else if (b[i] == 999991)top2--, stack2[top2] = stack2[top2] + stack2[top2 + 1];
            else if (b[i] == 999992)top2--, stack2[top2] = stack2[top2] - stack2[top2 + 1];
            else if (b[i] == 999993)top2--, stack2[top2] = stack2[top2] * stack2[top2 + 1];
            else if (b[i] == 999994)top2--, stack2[top2] = 1.0*stack2[top2] / stack2[top2 + 1];
        }
        printf("%.2lf\\n", stack2[0]);
    }
    return 0;
}


Android应用开发 标准体重计算器


应用的操作和原理

目标Android应用的操作过程是这样的:选择你的性别,然后输入你的身高,点查看计算结果的按钮就在Toast中显示你的标准体重。力求操作简单,结果显示清楚。

标准体重的计算公式:


男性:(身高cm-80)×70?=标准体重
 女性:(身高cm-70)×60?=标准体重


应用的源码

BMIActivity.java:
package com.lingdududu.bmi;   
  
import java.text.DecimalFormat;   
import java.text.NumberFormat;   
import android.app.Activity;   
import android.os.Bundle;   
import android.view.View;   
import android.view.View.OnClickListener;   
import android.widget.Button;    
import android.widget.EditText;   
import android.widget.RadioButton;   
import android.widget.Toast;     
/*  
* @author lingdududu * 该程序的功能是用户选择自己的性别和输入自己的身高,然后点击按钮,就能在Toast显示出自己的标准体重  
*/  
public class BMIActivity extends Activity {   
/** Called when the activity is first created. */  
    private Button countButton;     
    private EditText heighText;     
    private RadioButton maleBtn, femaleBtn;      
    String sex = "";     
    double height;     
    @Override    
    public void onCreate(Bundle savedInstanceState) {     
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.main);     
        //调用创建视图的函数     
        creadView();     
        //调用性别选择的函数     
        sexChoose();     
        //调用Button注册监听器的函数     
        setListener();     
   }     
         
    //响应Button事件的函数     
    private void setListener() {     
        countButton.setOnClickListener(countListner);     
    }     
    
    private OnClickListener countListner = new OnClickListener() {     
             
        @Override    
        public void onClick(View v) {     
            // TODO Auto-generated method stub     
            Toast.makeText(BMIActivity.this, "你是一位"+sexChoose()+"\\n"    
                           +"你的身高为"+Double.parseDouble(heighText.getText().toString())+"cm"    
                           +"\\n你的标准体重为"+getWeight(sexChoose(), height)+"kg", Toast.LENGTH_LONG)     
                           .show();     
        }     
    };     
         
    //性别选择的函数     
    private String sexChoose(){          
        if (maleBtn.isChecked()) {     
            sex = "男性";     
        }      
        else if(femaleBtn.isChecked()){     
            sex = "女性";     
        }     
        return sex;          
    }     
         
    //创建视图的函数     
    public void creadView(){     
        //txt=(TextView)findViewById(R.id.txt);     
        countButton=(Button)findViewById(R.id.btn);     
        heighText=(EditText)findViewById(R.id.etx);     
        maleBtn=(RadioButton)findViewById(R.id.male);     
        femaleBtn=(RadioButton)findViewById(R.id.female);        
        //txt.setBackgroundResource(R.drawable.bg);     
    }     
         
    //标准体重格式化输出的函数     
    private String format(double num) {  
        NumberFormat formatter = new DecimalFormat("0.00");     
        String str = formatter.format(num);     
        return str;     
        }     
         
    //得到标准体重的函数     
    private String getWeight(String sex, double height) {     
        height = Double.parseDouble(heighText.getText().toString());     
        String weight = "";     
        if (sex.equals("男性")) {     
              weight =format((height - 80) * 0.7);     
        }      
        else {     
              weight = format((height - 70) * 0.6);     
        }     
        return weight;     
       }     
   }



main.xml:


XML/HTML代码

        
        
            
           
              
                
                
             
           
           
           
    


应用效果图



本文来源:http://www.bbyears.com/jiaocheng/82135.html