当前位置:   article > 正文

Android应用开发基础—实现一个简易的计算器学习总结_android studio简易计算机

android studio简易计算机

目录

一、前言

二、设计思路

布局:

后台:

三、演示:

 四、总结


一、前言

学习目标:根据课程所学的相关知识,完成一个简易的计算器,并实现一定的功能。

工具环境:Android studio、Java语言

实现功能:

1.完成简单的页面布局,要有数字、加、减、乘、除、删除、清零等基本按钮

2.完成后台对有关功能的基本实现

二、设计思路

布局:

1.新建一个Android Studio项目,并创建一个Activity用于显示计算器的UI界面

2.在布局文件中添加TextView用于显示用户输入的表达式和计算结果,以及多个Button控件用于用户的操作。

一、布局使用GridLayout完成布局:

1.整体布局放一个GridLayout,其中:

(1)第一个GridLayout放入两个编辑框,作为计算器的结果框和输入过程框

  1. <GridLayout
  2. android:layout_width="match_parent"
  3. android:layout_height="wrap_content"
  4. android:orientation="vertical"
  5. >
  6. <EditText
  7. android:id="@+id/ed_input"
  8. android:layout_width="match_parent"
  9. android:layout_height="100dp"
  10. android:hint="输入框"
  11. />
  12. <EditText
  13. android:id="@+id/ed_output"
  14. android:layout_width="match_parent"
  15. android:layout_height="100dp"
  16. android:hint="输出口"
  17. />
  18. </GridLayout>

(2)第二个GridLayout放入操作的按钮

  1. <GridLayout
  2. android:layout_width="match_parent"
  3. android:layout_height="304dp"
  4. android:columnCount="4"
  5. android:rowCount="4">
  6. <Button
  7. android:id="@+id/buttonc"
  8. android:layout_width="180dp"
  9. android:layout_height="60dp"
  10. android:layout_columnSpan="2"
  11. android:backgroundTint="#a6a6a6"
  12. android:text="c" />
  13. <Button
  14. android:id="@+id/buttondel"
  15. android:layout_width="90dp"
  16. android:layout_height="60dp"
  17. android:layout_columnSpan="1"
  18. android:backgroundTint="#a6a6a6"
  19. android:text="DEL" />
  20. <Button
  21. android:id="@+id/buttonchu"
  22. android:layout_width="90dp"
  23. android:layout_height="60dp"
  24. android:backgroundTint="#ff9500"
  25. android:text="/" />
  26. <Button
  27. android:id="@+id/button7"
  28. android:layout_width="90dp"
  29. android:layout_height="60dp"
  30. android:backgroundTint="#333333"
  31. android:text="7" />
  32. <Button
  33. android:id="@+id/button8"
  34. android:layout_width="90dp"
  35. android:layout_height="60dp"
  36. android:backgroundTint="#333333"
  37. android:text="8" />
  38. <Button
  39. android:id="@+id/button9"
  40. android:layout_width="90dp"
  41. android:layout_height="60dp"
  42. android:backgroundTint="#333333"
  43. android:text="9" />
  44. <Button
  45. android:id="@+id/buttoncheng"
  46. android:layout_width="90dp"
  47. android:layout_height="60dp"
  48. android:backgroundTint="#ff9500"
  49. android:text="*" />
  50. <Button
  51. android:id="@+id/button4"
  52. android:layout_width="90dp"
  53. android:layout_height="60dp"
  54. android:backgroundTint="#333333"
  55. android:text="4" />
  56. <Button
  57. android:id="@+id/button5"
  58. android:layout_width="90dp"
  59. android:layout_height="60dp"
  60. android:backgroundTint="#333333"
  61. android:text="5" />
  62. <Button
  63. android:id="@+id/button6"
  64. android:layout_width="90dp"
  65. android:layout_height="60dp"
  66. android:backgroundTint="#333333"
  67. android:text="6" />
  68. <Button
  69. android:id="@+id/buttonjian"
  70. android:layout_width="90dp"
  71. android:layout_height="60dp"
  72. android:backgroundTint="#ff9500"
  73. android:text="-" />
  74. <Button
  75. android:id="@+id/button1"
  76. android:layout_width="90dp"
  77. android:layout_height="60dp"
  78. android:backgroundTint="#333333"
  79. android:text="1" />
  80. <Button
  81. android:id="@+id/button2"
  82. android:layout_width="90dp"
  83. android:layout_height="60dp"
  84. android:backgroundTint="#333333"
  85. android:text="2" />
  86. <Button
  87. android:id="@+id/button3"
  88. android:layout_width="90dp"
  89. android:layout_height="60dp"
  90. android:backgroundTint="#333333"
  91. android:text="3" />
  92. <Button
  93. android:id="@+id/buttonjia"
  94. android:layout_width="90dp"
  95. android:layout_height="60dp"
  96. android:backgroundTint="#ff9500"
  97. android:text="+" />
  98. <Button
  99. android:id="@+id/buttonyuliu"
  100. android:layout_width="90dp"
  101. android:layout_height="60dp"
  102. android:backgroundTint="#333333"
  103. android:text="预留" />
  104. <Button
  105. android:id="@+id/button0"
  106. android:layout_width="90dp"
  107. android:layout_height="60dp"
  108. android:backgroundTint="#333333"
  109. android:text="0" />
  110. <Button
  111. android:id="@+id/buttondian"
  112. android:layout_width="90dp"
  113. android:layout_height="60dp"
  114. android:backgroundTint="#333333"
  115. android:text="." />
  116. <Button
  117. android:id="@+id/buttondeng"
  118. android:layout_width="90dp"
  119. android:layout_height="60dp"
  120. android:backgroundTint="#ff9500"
  121. android:text="=" />
  122. </GridLayout>

布局样式大致如图所示:

 二、部分代码解释:

1.为相应的按钮添加id

2.完善布局美观

后台:

通过布局绑定id实现相关功能,在Activity中,为每个Button控件添加点击事件的监听器,并在其中编写相应的逻辑代码

  1. package com.example.wyn_0411;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.Button;
  6. import android.widget.EditText;
  7. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
  8. private Button mbutton1,mbutton2,mbutton3,mbutton4,mbutton5,mbutton6,mbutton7,mbutton8,mbutton9,mbutton0,
  9. mbuttonc,mbuttondel,mbuttonyuliu,mbuttonjia,mbuttonjian,
  10. mbuttoncheng,mbuttonchu,mbuttondian,mbuttondeng;
  11. private EditText edinput,edoutput;
  12. private boolean deng_flag=false;
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.activity_main);
  17. //数字0-9
  18. mbutton1=findViewById(R.id.button1);
  19. mbutton2=findViewById(R.id.button2);
  20. mbutton3=findViewById(R.id.button3);
  21. mbutton4=findViewById(R.id.button4);
  22. mbutton5=findViewById(R.id.button5);
  23. mbutton6=findViewById(R.id.button6);
  24. mbutton7=findViewById(R.id.button7);
  25. mbutton8=findViewById(R.id.button8);
  26. mbutton9=findViewById(R.id.button9);
  27. mbutton0=findViewById(R.id.button0);
  28. //c、del、预留
  29. mbuttonc=findViewById(R.id.buttonc);
  30. mbuttondel=findViewById(R.id.buttondel);
  31. mbuttonyuliu=findViewById(R.id.buttonyuliu);
  32. //加减乘除、点、等号
  33. mbuttonjia=findViewById(R.id.buttonjia);
  34. mbuttonjian=findViewById(R.id.buttonjian);
  35. mbuttoncheng=findViewById(R.id.buttoncheng);
  36. mbuttonchu=findViewById(R.id.buttonchu);
  37. mbuttondeng=findViewById(R.id.buttondeng);
  38. mbuttondian=findViewById(R.id.buttondian);
  39. //输入输出
  40. edinput=findViewById(R.id.ed_input);
  41. edoutput=findViewById(R.id.ed_output);
  42. //设置按钮监听
  43. //0-9
  44. mbutton0.setOnClickListener(this);
  45. mbutton1.setOnClickListener(this);
  46. mbutton2.setOnClickListener(this);
  47. mbutton3.setOnClickListener(this);
  48. mbutton4.setOnClickListener(this);
  49. mbutton5.setOnClickListener(this);
  50. mbutton6.setOnClickListener(this);
  51. mbutton7.setOnClickListener(this);
  52. mbutton8.setOnClickListener(this);
  53. mbutton9.setOnClickListener(this);
  54. //c、del、预留
  55. mbuttonc.setOnClickListener(this);
  56. mbuttondel.setOnClickListener(this);
  57. mbuttonyuliu.setOnClickListener(this);
  58. //加减乘除、点、等号
  59. mbuttonjia.setOnClickListener(this);
  60. mbuttonjian.setOnClickListener(this);
  61. mbuttoncheng.setOnClickListener(this);
  62. mbuttonchu.setOnClickListener(this);
  63. mbuttondeng.setOnClickListener(this);
  64. mbuttondian.setOnClickListener(this);
  65. }
  66. @Override
  67. public void onClick(View view)
  68. {
  69. String input = edinput.getText().toString();
  70. String output = edoutput.getText().toString();
  71. switch (view.getId()){
  72. //0-9
  73. case R.id.button0:
  74. case R.id.button1:
  75. case R.id.button2:
  76. case R.id.button3:
  77. case R.id.button4:
  78. case R.id.button5:
  79. case R.id.button6:
  80. case R.id.button7:
  81. case R.id.button8:
  82. case R.id.button9:
  83. case R.id.buttondian:
  84. if(deng_flag){
  85. deng_flag=false;
  86. edinput.setText(null);
  87. edinput.setText(((Button) view).getText());
  88. }else {
  89. edinput.setText(input+((Button) view).getText());
  90. }
  91. edinput.setText(input+((Button) view).getText());
  92. break;
  93. //c
  94. case R.id.buttonc:
  95. edinput.setText(null);
  96. edoutput.setText(null);
  97. break;
  98. //del
  99. case R.id.buttondel:
  100. if (deng_flag){
  101. deng_flag=false;
  102. edinput.setText("");
  103. }else if(input !=null&&!input.equals("")){
  104. edinput.setText(input.substring(0,input.length()-1));
  105. }
  106. break;
  107. //预留
  108. case R.id.buttonyuliu:
  109. break;
  110. //加减乘除
  111. case R.id.buttonjia:
  112. case R.id.buttonjian:
  113. case R.id.buttoncheng:
  114. case R.id.buttonchu:
  115. edinput.setText(input+" "+((Button) view).getText()+" ");
  116. break;
  117. //等号
  118. case R.id.buttondeng:
  119. // edinput.setText(input+((Button) view).getText());
  120. // break;
  121. getResult();
  122. }
  123. }
  124. private void getResult() {
  125. try{
  126. String input = edinput.getText().toString();
  127. int iResult=0;
  128. double dResult=0;
  129. String cw="错误";
  130. String s1,s2,op;//数字,数字,操作符 s1"4" op"*" s2"5"
  131. s1=input.substring(0,input.indexOf(" "));
  132. op=input.substring(input.indexOf(" ")+1,input.indexOf(" ")+2);
  133. s2=input.substring(input.indexOf(" ")+3);
  134. double d1,d2;
  135. d1=Double.parseDouble(s1);
  136. d2=Double.parseDouble(s2);
  137. if(op.equals("+")){//
  138. dResult=d1+d2;
  139. // edoutput.setText(dResult+"");
  140. }else if(op.equals("-")){//
  141. dResult=d1-d2;
  142. } else if (op.equals("*")){//
  143. dResult=d1*d2;
  144. } else if (op.equals("/")) {//
  145. if(d2==0){
  146. edoutput.setText(cw+"");
  147. } else if (d1==0) {
  148. dResult=0;
  149. } else {
  150. dResult=d1/d2;
  151. }
  152. }
  153. if(!input.equals(".")&&!input.equals("/")){
  154. iResult=(int)dResult;
  155. edoutput.setText(iResult+"");
  156. }
  157. edoutput.setText(dResult+"");
  158. }catch (Exception e){
  159. System.out.println(e);
  160. }
  161. }
  162. }

实现计算器的逻辑代码,包括处理用户输入数字和运算符、进行表达式计算等

三、演示:

在输入框输入计算过程,结果框可呈现计算结果

如图所示:

 四、总结

在使用Android Studio和Java语言实现简单的计算器的过程中,我发现了Java语言和Android Studio这两个强大的工具的优点和使用方法,深刻体会到了软件开发的乐趣和挑战性。

首先,Java语言可以帮助开发者快速开发出高效稳定的应用程序,其中尤其强调面向对象的思想和编写高质量的代码。在这个应用程序中我使用了Java语言编写逻辑代码,并采用了面向对象的编程方式,将各种计算功能分别封装成函数,并结合类的实例化来实现计算器的基本功能,这大大提高了程序的代码质量和可重用性。在编写代码的过程中,我需要认真思考代码的逻辑性和完成度等问题,必须一步一步地解决问题。这种过程可以锻炼我的逻辑思维和解决问题的能力。

其次,Android Studio作为一种高级的开发工具,可以有效提高程序员的开发效率,例如代码提示和自动补全、调试以及丰富的开发库和插件等等。同时,Android Studio还提供了一些强大的工具,例如布局编辑器、调试器、生成APK、发布应用程序等等,这些工具帮助开发者快速和高效地开发出高质量的应用程序。以及在UI的设计和交互实现中,需要根据用户的习惯和需求,设计出一个方便实用的界面锻炼了我的UI设计能力。在代码的调试和优化中,我需要仔细查找和解决各种可能出现的问题,精益求精,让代码更加稳定和高效。这锻炼了我的耐心和细节把控能力

总的来说,在使用Android Studio和Java语言实现简单的计算器的过程中,我受益匪浅,不仅让我深入了解了Java语言和应用程序的开发流程、设计思路和实现技巧,还让我认识到了软件开发的妙趣和难度。我相信,通过不断努力和学习,我将能够编写出更加优秀、实用和高效的应用程序。

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

闽ICP备14008679号