第一步:定义所需的字符 string.xml
Calculator
Settings
Hello world!
Clear
/
*
Back
7
8
9
—
4
5
6
+
1
2
3
.
0
)
(
=
第二步:编辑界面 activity.main.xml
android:layout_width="match_parent" android:layout_height="match_parent" > android:id="@+id/text1" android:layout_width="320dp" android:layout_height="60dp" android:textSize="40sp" />
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:id="@+id/text1" android:layout_width="320dp" android:layout_height="60dp" android:textSize="40sp" />
android:id="@+id/text1"
android:layout_width="320dp"
android:layout_height="60dp"
android:textSize="40sp" />
android:id="@+id/text2" android:layout_width="320dp" android:layout_height="60dp" android:textSize="40sp"/> android:id="@+id/button_clear" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/clear" android:textSize="20sp" /> android:id="@+id/button_chu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/chu" android:textSize="20sp" /> android:id="@+id/button_cheng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/cheng" android:textSize="20sp" /> android:id="@+id/button_tui" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/tui" android:textSize="20sp" /> android:id="@+id/button_qi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/qi" android:textSize="30sp" /> android:id="@+id/button_ba" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ba" android:textSize="30sp" /> android:id="@+id/button_jiu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jiu" android:textSize="30sp" /> android:id="@+id/button_jian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jian" android:textSize="30sp" /> android:id="@+id/button_si" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/si" android:textSize="30sp" /> android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/text2"
android:textSize="40sp"/>
android:id="@+id/button_clear" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/clear" android:textSize="20sp" /> android:id="@+id/button_chu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/chu" android:textSize="20sp" /> android:id="@+id/button_cheng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/cheng" android:textSize="20sp" /> android:id="@+id/button_tui" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/tui" android:textSize="20sp" /> android:id="@+id/button_qi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/qi" android:textSize="30sp" /> android:id="@+id/button_ba" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ba" android:textSize="30sp" /> android:id="@+id/button_jiu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jiu" android:textSize="30sp" /> android:id="@+id/button_jian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jian" android:textSize="30sp" /> android:id="@+id/button_si" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/si" android:textSize="30sp" /> android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_clear"
android:layout_width="80dp"
android:layout_height="70dp"
android:text="@string/clear"
android:textSize="20sp" />
android:id="@+id/button_chu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/chu" android:textSize="20sp" /> android:id="@+id/button_cheng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/cheng" android:textSize="20sp" /> android:id="@+id/button_tui" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/tui" android:textSize="20sp" /> android:id="@+id/button_qi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/qi" android:textSize="30sp" /> android:id="@+id/button_ba" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ba" android:textSize="30sp" /> android:id="@+id/button_jiu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jiu" android:textSize="30sp" /> android:id="@+id/button_jian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jian" android:textSize="30sp" /> android:id="@+id/button_si" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/si" android:textSize="30sp" /> android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_chu"
android:text="@string/chu"
android:id="@+id/button_cheng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/cheng" android:textSize="20sp" /> android:id="@+id/button_tui" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/tui" android:textSize="20sp" /> android:id="@+id/button_qi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/qi" android:textSize="30sp" /> android:id="@+id/button_ba" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ba" android:textSize="30sp" /> android:id="@+id/button_jiu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jiu" android:textSize="30sp" /> android:id="@+id/button_jian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jian" android:textSize="30sp" /> android:id="@+id/button_si" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/si" android:textSize="30sp" /> android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_cheng"
android:text="@string/cheng"
android:id="@+id/button_tui" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/tui" android:textSize="20sp" /> android:id="@+id/button_qi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/qi" android:textSize="30sp" /> android:id="@+id/button_ba" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ba" android:textSize="30sp" /> android:id="@+id/button_jiu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jiu" android:textSize="30sp" /> android:id="@+id/button_jian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jian" android:textSize="30sp" /> android:id="@+id/button_si" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/si" android:textSize="30sp" /> android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_tui"
android:text="@string/tui"
android:id="@+id/button_qi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/qi" android:textSize="30sp" /> android:id="@+id/button_ba" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ba" android:textSize="30sp" /> android:id="@+id/button_jiu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jiu" android:textSize="30sp" /> android:id="@+id/button_jian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jian" android:textSize="30sp" /> android:id="@+id/button_si" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/si" android:textSize="30sp" /> android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_qi"
android:text="@string/qi"
android:textSize="30sp" />
android:id="@+id/button_ba" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ba" android:textSize="30sp" /> android:id="@+id/button_jiu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jiu" android:textSize="30sp" /> android:id="@+id/button_jian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jian" android:textSize="30sp" /> android:id="@+id/button_si" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/si" android:textSize="30sp" /> android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_ba"
android:text="@string/ba"
android:id="@+id/button_jiu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jiu" android:textSize="30sp" /> android:id="@+id/button_jian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jian" android:textSize="30sp" /> android:id="@+id/button_si" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/si" android:textSize="30sp" /> android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_jiu"
android:text="@string/jiu"
android:id="@+id/button_jian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jian" android:textSize="30sp" /> android:id="@+id/button_si" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/si" android:textSize="30sp" /> android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_jian"
android:text="@string/jian"
android:id="@+id/button_si" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/si" android:textSize="30sp" /> android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_si"
android:text="@string/si"
android:id="@+id/button_wu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/wu" android:textSize="30sp" /> android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_wu"
android:text="@string/wu"
android:id="@+id/button_liu" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/liu" android:textSize="30sp" /> android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_liu"
android:text="@string/liu"
android:id="@+id/button_jia" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/jia" android:textSize="30sp" /> android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_jia"
android:text="@string/jia"
android:id="@+id/button_yi" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/yi" android:textSize="30sp" /> android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_yi"
android:text="@string/yi"
android:id="@+id/button_er" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/er" android:textSize="30sp" /> android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_er"
android:text="@string/er"
android:id="@+id/button_san" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/san" android:textSize="30sp" /> android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_san"
android:text="@string/san"
android:id="@+id/button_dian" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/dian" android:textSize="30sp" /> android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_dian"
android:text="@string/dian"
android:id="@+id/button_ling" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/ling" android:textSize="30sp" /> android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_ling"
android:text="@string/ling"
android:id="@+id/button_kuohao_r" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_r" android:textSize="30sp" /> android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_kuohao_r"
android:text="@string/kuohao_r"
android:id="@+id/button_kuohao_l" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/kuohao_l" android:textSize="30sp" /> android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_kuohao_l"
android:text="@string/kuohao_l"
android:id="@+id/button_deng" android:layout_width="80dp" android:layout_height="70dp" android:text="@string/deng" android:textSize="30sp" /> 第三步:编写处理四则运算(包含括号)的类 Yuansuan.classpackage com.malakana.cal;import android.annotation.SuppressLint;import java.util.*;public class Yunsuan {Yunsuan(String str1) {EvaluateExpression(str1);}@SuppressLint("UseValueOf")public static String EvaluateExpression(String str) {char[] a;int i = 0;a = str.toCharArray();Stack OPND = new Stack();Stack OPTR = new Stack();OPTR.push('=');float number = 0;int decimalnum = 1;boolean integer = false;boolean decimal = false;while (true) {if (i == str.length())break;if (In(a[i]) == -1) {number = number * 10 + (a[i] - 48);integer = true;if (decimal)decimalnum = decimalnum * 10;i++;} else if (a[i] == '.') {if (decimal)return "ERROR";decimal = integer = true;i++;} else if (In(a[i]) > -1 && In(a[i]) < 7) {if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))OPND.push(new Float(0));if (integer) {OPND.push(new Float(number / decimalnum));number = 0;decimalnum = 1;integer = decimal = false;}switch (Precede(In(OPTR.peek()), In(a[i]))) {case 2:if (OPND.empty())return "ERROR";float x = OPND.pop();if (OPND.empty())return "ERROR";float y = OPND.pop();char theta = OPTR.pop();if (In(theta) == 3 && x == 0)return "ERROR";OPND.push(new Float(Operate(y, theta, x)));break;case 1:OPTR.pop();i++;break;case 0:OPTR.push(new Character(a[i]));i++;break;case -1:return "ERROR";}}}if (OPND.empty())return "ERROR";elsereturn ("" + OPND.peek());}public static int In(char t) {int i = 0;if (t > 47 && t < 58)return -1;switch (t) {case '+':i = 0;break;case '-':i = 1;break;case '*':i = 2;break;case '/':i = 3;break;case '(':i = 4;break;case ')':i = 5;break;case '=':i = 6;break;}return i;}public static int Precede(int t1, int t2) {int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };return relationship[t1][t2];}public static float Operate(float a, char theta, float b) {float i = 0;switch (theta) {case '+':i = a + b;break;case '-':i = a - b;break;case '*':i = a * b;break;case '/':i = a / b;break;}return i;}public static void main(String[] args) {new Yunsuan(null);}}第四部: 编写主类 MianActivity.javapackage com.malakana.cal;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity implements OnClickListener {String str = "";String str1 = "";String suanfa;TextView text1;TextView text2;Button button_jia;Button button_jian;Button button_cheng;Button button_chu;Button button_clear;Button button_tui;Button button_deng;Button button_kuohao_l;Button button_kuohao_r;Button button_dian;Button button_yi;Button button_er;Button button_san;Button button_si;Button button_wu;Button button_liu;Button button_qi;Button button_ba;Button button_jiu;Button button_ling;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.text1);text2 = (TextView) findViewById(R.id.text2);text1.setTextSize(20);text2.setTextSize(20);button_jia = (Button) findViewById(R.id.button_jia);button_jia.setTextSize(17);button_jian = (Button) findViewById(R.id.button_jian);button_jian.setTextSize(17);button_cheng = (Button) findViewById(R.id.button_cheng);button_cheng.setTextSize(17);button_chu = (Button) findViewById(R.id.button_chu);button_chu.setTextSize(17);button_dian = (Button) findViewById(R.id.button_dian);button_dian.setTextSize(17);button_deng = (Button) findViewById(R.id.button_deng);button_clear = (Button) findViewById(R.id.button_clear);button_tui = (Button) findViewById(R.id.button_tui);button_jian = (Button) findViewById(R.id.button_jian);button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);button_yi = (Button) findViewById(R.id.button_yi);button_er = (Button) findViewById(R.id.button_er);button_san = (Button) findViewById(R.id.button_san);button_si = (Button) findViewById(R.id.button_si);button_wu = (Button) findViewById(R.id.button_wu);button_liu = (Button) findViewById(R.id.button_liu);button_qi = (Button) findViewById(R.id.button_qi);button_ba = (Button) findViewById(R.id.button_ba);button_jiu = (Button) findViewById(R.id.button_jiu);button_ling = (Button) findViewById(R.id.button_ling);button_jia.setOnClickListener(this);button_jian.setOnClickListener(this);button_cheng.setOnClickListener(this);button_chu.setOnClickListener(this);button_dian.setOnClickListener(this);button_clear.setOnClickListener(this);button_tui.setOnClickListener(this);button_deng.setOnClickListener(this);button_kuohao_l.setOnClickListener(this);button_kuohao_r.setOnClickListener(this);button_yi.setOnClickListener(this);button_er.setOnClickListener(this);button_san.setOnClickListener(this);button_si.setOnClickListener(this);button_wu.setOnClickListener(this);button_liu.setOnClickListener(this);button_qi.setOnClickListener(this);button_ba.setOnClickListener(this);button_jiu.setOnClickListener(this);button_ling.setOnClickListener(this);}@Overridepublic 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;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubButton listener = (Button) v;if (listener.getText().equals("1") || listener.getText().equals("2")|| listener.getText().equals("3")|| listener.getText().equals("4")|| listener.getText().equals("5")|| listener.getText().equals("6")|| listener.getText().equals("7")|| listener.getText().equals("8")|| listener.getText().equals("9")|| listener.getText().equals("0")|| listener.getText().equals(".")) {str = str + listener.getText();} else if (listener.getText().equals("+")|| listener.getText().equals("-")|| listener.getText().equals("*")|| listener.getText().equals("/")|| listener.getText().equals("(")|| listener.getText().equals(")")) {if (str1.endsWith("=")) {str1 = "";}str = str + listener.getText();str1 = str1 + str;str = "";} else if (listener.getText().equals("=")) {if(str1.endsWith("=")){str1="";}str = str + listener.getText();str1 = str1 + str; str=Yunsuan.EvaluateExpression(str1);//double m = 0;//m = CalcStr.calc(str1);//str1 = str1 + "=";//str = m + "";}else if (listener.getText().equals("Back")) {if (str.length() >= 1) {str = str.substring(0, str.length() - 1);} else {str1 = "";str = "";}} else if (listener.getText().equals("Clear")) {str = "";str1 = "";}text2.setText(str);text1.setText(str1);text1.setTextSize(TRIM_MEMORY_BACKGROUND);text2.setTextSize(TRIM_MEMORY_BACKGROUND);}}最后编译实现 run for Android Application另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 当前标题:Android计算器编程实现-创新互联 地址分享:http://myzitong.com/article/cdcgde.html
android:id="@+id/button_deng"
android:text="@string/deng"
第三步:编写处理四则运算(包含括号)的类 Yuansuan.class
package com.malakana.cal;
import android.annotation.SuppressLint;
import java.util.*;
public class Yunsuan {
Yunsuan(String str1) {
EvaluateExpression(str1);
}
@SuppressLint("UseValueOf")
public static String EvaluateExpression(String str) {
char[] a;
int i = 0;
a = str.toCharArray();
Stack OPND = new Stack();
Stack OPTR = new Stack();
OPTR.push('=');
float number = 0;
int decimalnum = 1;
boolean integer = false;
boolean decimal = false;
while (true) {
if (i == str.length())
break;
if (In(a[i]) == -1) {
number = number * 10 + (a[i] - 48);
integer = true;
if (decimal)
decimalnum = decimalnum * 10;
i++;
} else if (a[i] == '.') {
return "ERROR";
decimal = integer = true;
} else if (In(a[i]) > -1 && In(a[i]) < 7) {
if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))
OPND.push(new Float(0));
if (integer) {
OPND.push(new Float(number / decimalnum));
number = 0;
decimalnum = 1;
integer = decimal = false;
switch (Precede(In(OPTR.peek()), In(a[i]))) {
case 2:
if (OPND.empty())
float x = OPND.pop();
float y = OPND.pop();
char theta = OPTR.pop();
if (In(theta) == 3 && x == 0)
OPND.push(new Float(Operate(y, theta, x)));
case 1:
OPTR.pop();
case 0:
OPTR.push(new Character(a[i]));
case -1:
else
return ("" + OPND.peek());
public static int In(char t) {
if (t > 47 && t < 58)
return -1;
switch (t) {
case '+':
i = 0;
case '-':
i = 1;
case '*':
i = 2;
case '/':
i = 3;
case '(':
i = 4;
case ')':
i = 5;
case '=':
i = 6;
return i;
public static int Precede(int t1, int t2) {
int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },
{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },
{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },
{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };
return relationship[t1][t2];
public static float Operate(float a, char theta, float b) {
float i = 0;
switch (theta) {
i = a + b;
i = a - b;
i = a * b;
i = a / b;
public static void main(String[] args) {
new Yunsuan(null);
第四部: 编写主类 MianActivity.java
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
public class MainActivity extends Activity implements OnClickListener {
String str = "";
String str1 = "";
String suanfa;
TextView text1;
TextView text2;
Button button_jia;
Button button_jian;
Button button_cheng;
Button button_chu;
Button button_clear;
Button button_tui;
Button button_deng;
Button button_kuohao_l;
Button button_kuohao_r;
Button button_dian;
Button button_yi;
Button button_er;
Button button_san;
Button button_si;
Button button_wu;
Button button_liu;
Button button_qi;
Button button_ba;
Button button_jiu;
Button button_ling;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1 = (TextView) findViewById(R.id.text1);
text2 = (TextView) findViewById(R.id.text2);
text1.setTextSize(20);
text2.setTextSize(20);
button_jia = (Button) findViewById(R.id.button_jia);
button_jia.setTextSize(17);
button_jian = (Button) findViewById(R.id.button_jian);
button_jian.setTextSize(17);
button_cheng = (Button) findViewById(R.id.button_cheng);
button_cheng.setTextSize(17);
button_chu = (Button) findViewById(R.id.button_chu);
button_chu.setTextSize(17);
button_dian = (Button) findViewById(R.id.button_dian);
button_dian.setTextSize(17);
button_deng = (Button) findViewById(R.id.button_deng);
button_clear = (Button) findViewById(R.id.button_clear);
button_tui = (Button) findViewById(R.id.button_tui);
button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);
button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);
button_yi = (Button) findViewById(R.id.button_yi);
button_er = (Button) findViewById(R.id.button_er);
button_san = (Button) findViewById(R.id.button_san);
button_si = (Button) findViewById(R.id.button_si);
button_wu = (Button) findViewById(R.id.button_wu);
button_liu = (Button) findViewById(R.id.button_liu);
button_qi = (Button) findViewById(R.id.button_qi);
button_ba = (Button) findViewById(R.id.button_ba);
button_jiu = (Button) findViewById(R.id.button_jiu);
button_ling = (Button) findViewById(R.id.button_ling);
button_jia.setOnClickListener(this);
button_jian.setOnClickListener(this);
button_cheng.setOnClickListener(this);
button_chu.setOnClickListener(this);
button_dian.setOnClickListener(this);
button_clear.setOnClickListener(this);
button_tui.setOnClickListener(this);
button_deng.setOnClickListener(this);
button_kuohao_l.setOnClickListener(this);
button_kuohao_r.setOnClickListener(this);
button_yi.setOnClickListener(this);
button_er.setOnClickListener(this);
button_san.setOnClickListener(this);
button_si.setOnClickListener(this);
button_wu.setOnClickListener(this);
button_liu.setOnClickListener(this);
button_qi.setOnClickListener(this);
button_ba.setOnClickListener(this);
button_jiu.setOnClickListener(this);
button_ling.setOnClickListener(this);
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;
public void onClick(View v) {
// TODO Auto-generated method stub
Button listener = (Button) v;
if (listener.getText().equals("1") || listener.getText().equals("2")
|| listener.getText().equals("3")
|| listener.getText().equals("4")
|| listener.getText().equals("5")
|| listener.getText().equals("6")
|| listener.getText().equals("7")
|| listener.getText().equals("8")
|| listener.getText().equals("9")
|| listener.getText().equals("0")
|| listener.getText().equals(".")) {
str = str + listener.getText();
} else if (listener.getText().equals("+")
|| listener.getText().equals("-")
|| listener.getText().equals("*")
|| listener.getText().equals("/")
|| listener.getText().equals("(")
|| listener.getText().equals(")")) {
if (str1.endsWith("=")) {
str1 = "";
str1 = str1 + str;
str = "";
} else if (listener.getText().equals("=")) {
if(str1.endsWith("=")){
str1="";
str=Yunsuan.EvaluateExpression(str1);
//double m = 0;
//m = CalcStr.calc(str1);
//str1 = str1 + "=";
//str = m + "";
else if (listener.getText().equals("Back")) {
if (str.length() >= 1) {
str = str.substring(0, str.length() - 1);
} else {
} else if (listener.getText().equals("Clear")) {
text2.setText(str);
text1.setText(str1);
text1.setTextSize(TRIM_MEMORY_BACKGROUND);
text2.setTextSize(TRIM_MEMORY_BACKGROUND);
最后编译实现 run for Android Application
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。