当前位置:   article > 正文

安卓AndroidStudio设计计算器实现简单的计算_android studio计算机页面写好了如何计算

android studio计算机页面写好了如何计算

 

一、内容

基于AndroidStudio,实现一个简易的计算器(界面+简单的计算)。

下面是整体界面:

二、思路

  1. 首先设计界面,activity_main.xml

计算器界面,需要:文本框TextView——显示数字;数字、符号按钮Button

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:rowCount="6"
  6. android:columnCount="4"
  7. >
  8. <!--文本标签-->
  9. <TextView
  10. android:id="@+id/text"
  11. android:layout_width="350dp"
  12. android:layout_height="wrap_content"
  13. android:layout_columnSpan="4"
  14. android:layout_marginLeft="4px"
  15. android:gravity="left"
  16. android:textSize="50dp" />
  17. <Button
  18. android:id="@+id/btnClear"
  19. android:layout_width="353dp"
  20. android:layout_height="wrap_content"
  21. android:layout_columnSpan="4"
  22. android:background="@color/colorAccent"
  23. android:text="清除"
  24. android:textSize="26sp" />
  25. <Button
  26. android:id="@+id/btn1"
  27. android:text="1"
  28. android:textSize="26sp" />
  29. <Button
  30. android:id="@+id/btn2"
  31. android:text="2"
  32. android:textSize="26sp" />
  33. <Button
  34. android:id="@+id/btn3"
  35. android:text="3"
  36. android:textSize="26sp" />
  37. <Button
  38. android:id="@+id/btnPlus"
  39. android:background="@color/colorPrimary"
  40. android:text="+"
  41. android:textSize="26sp" />
  42. <Button
  43. android:id="@+id/btn4"
  44. android:text="4"
  45. android:textSize="26sp" />
  46. <Button
  47. android:id="@+id/btn5"
  48. android:text="5"
  49. android:textSize="26sp" />
  50. <Button
  51. android:id="@+id/btn6"
  52. android:text="6"
  53. android:textSize="26sp" />
  54. <Button
  55. android:id="@+id/btnSubtract"
  56. android:background="@color/colorPrimary"
  57. android:text="-"
  58. android:textSize="26sp" />
  59. <Button
  60. android:id="@+id/btn7"
  61. android:text="7"
  62. android:textSize="26sp" />
  63. <Button
  64. android:id="@+id/btn8"
  65. android:text="8"
  66. android:textSize="26sp" />
  67. <Button
  68. android:id="@+id/btn9"
  69. android:text="9"
  70. android:textSize="26sp" />
  71. <Button
  72. android:id="@+id/btnMultiply"
  73. android:background="@color/colorPrimary"
  74. android:text="*"
  75. android:textSize="26sp" />
  76. <Button
  77. android:id="@+id/btnPoint"
  78. android:text="."
  79. android:textSize="26sp" />
  80. <Button
  81. android:id="@+id/btn0"
  82. android:text="0"
  83. android:textSize="26sp" />
  84. <Button
  85. android:id="@+id/btnSum"
  86. android:text="="
  87. android:textSize="26sp" />
  88. <Button
  89. android:id="@+id/btnDivide"
  90. android:background="@color/colorPrimary"
  91. android:text="/"
  92. android:textSize="26sp" />
  93. </GridLayout>

2.接下来是功能的实现,MainActivity.java

给各个按钮注册点击事件、对输入内容的判断和计算等。

  1. package com.example.asus.calculator;
  2. import android.support.v7.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.widget.Button;
  5. import android.widget.TextView;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  9. Button btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,
  10. btnClear,btnPlus,btnSubtract,btnMultiply,btnDivide,btnSum,btnPoint;
  11. TextView text;
  12. String str = "";
  13. boolean clr_flag;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. btn0 = (Button) findViewById(R.id.btn0);
  19. btn1 = (Button) findViewById(R.id.btn1);
  20. btn2 = (Button) findViewById(R.id.btn2);
  21. btn3 = (Button) findViewById(R.id.btn3);
  22. btn4 = (Button) findViewById(R.id.btn4);
  23. btn5 = (Button) findViewById(R.id.btn5);
  24. btn6 = (Button) findViewById(R.id.btn6);
  25. btn7 = (Button) findViewById(R.id.btn7);
  26. btn8 = (Button) findViewById(R.id.btn8);
  27. btn9 = (Button) findViewById(R.id.btn9);
  28. btnClear = (Button) findViewById(R.id.btnClear);
  29. btnPlus = (Button) findViewById(R.id.btnPlus);
  30. btnSubtract = (Button) findViewById(R.id.btnSubtract);
  31. btnMultiply = (Button) findViewById(R.id.btnMultiply);
  32. btnDivide = (Button) findViewById(R.id.btnDivide);
  33. btnPoint = (Button) findViewById(R.id.btnPoint);
  34. btnSum = (Button) findViewById(R.id.btnSum);
  35. text = (TextView) findViewById(R.id.text) ;
  36. btn0.setOnClickListener(this);
  37. btn1.setOnClickListener(this);
  38. btn2.setOnClickListener(this);
  39. btn3.setOnClickListener(this);
  40. btn4.setOnClickListener(this);
  41. btn5.setOnClickListener(this);
  42. btn6.setOnClickListener(this);
  43. btn7.setOnClickListener(this);
  44. btn8.setOnClickListener(this);
  45. btn9.setOnClickListener(this);
  46. btnClear.setOnClickListener(this);
  47. btnPlus.setOnClickListener(this);
  48. btnSubtract.setOnClickListener(this);
  49. btnMultiply.setOnClickListener(this);
  50. btnDivide.setOnClickListener(this);
  51. btnPoint.setOnClickListener(this);
  52. btnSum.setOnClickListener(new click());
  53. }
  54. public void onClick(View v) {
  55. String input=text.getText().toString();
  56. switch (v.getId()){
  57. case R.id.btn0:
  58. case R.id.btn1:
  59. case R.id.btn2:
  60. case R.id.btn3:
  61. case R.id.btn4:
  62. case R.id.btn5:
  63. case R.id.btn6:
  64. case R.id.btn7:
  65. case R.id.btn8:
  66. case R.id.btn9:
  67. case R.id.btnPoint:
  68. if(clr_flag){
  69. clr_flag=false;
  70. str="";
  71. text.setText("");
  72. }
  73. text.setText(input+((Button)v).getText());
  74. break;
  75. case R.id.btnPlus:
  76. case R.id.btnSubtract:
  77. case R.id.btnMultiply:
  78. case R.id.btnDivide:
  79. if(clr_flag){
  80. clr_flag=false;
  81. input="";
  82. text.setText("");
  83. }
  84. text.setText(input + " " + ((Button)v).getText() + " ");
  85. break;
  86. case R.id.btnClear:
  87. text.setText("");
  88. break;
  89. }
  90. }
  91. class click implements OnClickListener{
  92. public void onClick (View v) {
  93. getResult();//调用方法,计算结果
  94. }
  95. }
  96. private void getResult () {
  97. String str1 = text.getText().toString();
  98. if(str1 == null || str1.equals("")){
  99. return;
  100. }
  101. if(!str1.contains(" ")){
  102. return ;
  103. }
  104. if(clr_flag){
  105. clr_flag=false;
  106. return;
  107. }
  108. clr_flag=true;
  109. double result = 0;
  110. // 运算符前的数字
  111. String s1 = str1.substring(0,str1.indexOf(" "));
  112. // 运算符
  113. String op = str1.substring(str1.indexOf(" ")+1,str1.indexOf(" ")+2);
  114. // 运算符后的数字
  115. String s2 = str1.substring(str1.indexOf(" ")+3);
  116. // 判断
  117. // 1. 如果s1、s2都不为空
  118. if(!s1.equals("")&&!s2.equals("")) { //包含小数点运算
  119. double d1 = Double.parseDouble(s1);//则数字都是double类型
  120. double d2 = Double.parseDouble(s2);
  121. if (op.equals("+")) { //如果是 +
  122. result = d1 + d2;
  123. } else if (op.equals("-")) { //如果是 -
  124. result = d1 - d2;
  125. } else if (op.equals("*")) { //如果是 *
  126. result = d1 * d2;
  127. } else if (op.equals("/")) { //如果是 /
  128. if (d2 == 0) { //如果被除数是0
  129. result = 0; //则结果是0
  130. }
  131. else {//否则执行正常是除法运算
  132. result = d1 / d2;
  133. }
  134. }
  135. if (!s1.contains(".") && !s2.contains(".") && !op.equals("/")) {//如果是整数类型
  136. int r = (int) result; //都是整形
  137. text.setText(str1 + " = " + r + "");
  138. } else{
  139. text.setText(str1 + " = " + result + "");
  140. }
  141. }
  142. // 如果s1不是空,s2是空
  143. else if(!s1.equals("")&&s2.equals("")){
  144. double d1 = Double.parseDouble(s1);
  145. if (op.equals("+")){
  146. result = d1;
  147. }
  148. if (op.equals("-")) {
  149. result = d1;
  150. }
  151. if (op.equals("*")) {
  152. result = 0;
  153. }
  154. if (op.equals("/")) {
  155. result = 0;
  156. }
  157. if(!s1.contains(".")) {
  158. int res = (int) result;
  159. text.setText(str1 + " = " + res+"");
  160. }else {
  161. text.setText(str1 + " = " + result+"");
  162. }
  163. }
  164. // 如果s1是空,s2不是空
  165. else if(s1.equals("")&& !s2.equals("")){
  166. double d2 = Double.parseDouble(s2);
  167. if(op.equals("+")){
  168. result = 0+d2;
  169. }else if(op.equals("-")){
  170. result = 0-d2;
  171. }else if(op.equals("*")){
  172. result = 0;
  173. }else if(op.equals("/")){
  174. result = 0;
  175. }
  176. if(!s1.contains(".") && !s2.contains(".")){
  177. int res = (int) result;
  178. text.setText(str1 + " = " + res + "");
  179. }else{
  180. text.setText(str1 + " = " + result + "");
  181. }
  182. }else{
  183. text.setText("");
  184. }
  185. }
  186. }

三、结果显示

四、个人总结

 

在计算器的案例中,实现了简单的页面设计、布局等,主要要解决的问题在于对输入内容的分割,以及对分割后的字符的逻辑运算。作为一个简易的计算器,我只实现了简单的单个运算符的运算,希望日后可以实现更复杂点的功能。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/223252
推荐阅读
相关标签
  

闽ICP备14008679号