【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代码
应用效果图