目录
一、前言
学习目标:根据课程所学的相关知识,完成一个简易的计算器,并实现一定的功能。
工具环境:Android studio、Java语言
实现功能:
完成简单的页面布局,要有数字、加、减、乘、除、删除、清零等基本按钮
完成后台对有关功能的基本实现
二、设计思路
布局:
新建一个Android Studio项目,并创建一个Activity用于显示计算器的UI界面
在布局文件中添加TextView用于显示用户输入的表达式和计算结果,以及多个Button控件用于用户的操作。
一、布局使用GridLayout完成布局:
整体布局放一个GridLayout,其中:
(1)第一个GridLayout放入两个编辑框,作为计算器的结果框和输入过程框
(2)第二个GridLayout放入操作的按钮
布局样式大致如图所示:
二、部分代码解释:
为相应的按钮添加id
完善布局美观
后台:
通过布局绑定id实现相关功能,在Activity中,为每个Button控件添加点击事件的监听器,并在其中编写相应的逻辑代码
package com.example.wyn_0411;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Button mbutton1,mbutton2,mbutton3,mbutton4,mbutton5,mbutton6,mbutton7,mbutton8,mbutton9,mbutton0, mbuttonc,mbuttondel,mbuttonyuliu,mbuttonjia,mbuttonjian, mbuttoncheng,mbuttonchu,mbuttondian,mbuttondeng; private EditText edinput,edoutput; private boolean deng_flag=false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //数字0-9 mbutton1=findViewById(R.id.button1); mbutton2=findViewById(R.id.button2); mbutton3=findViewById(R.id.button3); mbutton4=findViewById(R.id.button4); mbutton5=findViewById(R.id.button5); mbutton6=findViewById(R.id.button6); mbutton7=findViewById(R.id.button7); mbutton8=findViewById(R.id.button8); mbutton9=findViewById(R.id.button9); mbutton0=findViewById(R.id.button0); //c、del、预留 mbuttonc=findViewById(R.id.buttonc); mbuttondel=findViewById(R.id.buttondel); mbuttonyuliu=findViewById(R.id.buttonyuliu); //加减乘除、点、等号 mbuttonjia=findViewById(R.id.buttonjia); mbuttonjian=findViewById(R.id.buttonjian); mbuttoncheng=findViewById(R.id.buttoncheng); mbuttonchu=findViewById(R.id.buttonchu); mbuttondeng=findViewById(R.id.buttondeng); mbuttondian=findViewById(R.id.buttondian); //输入输出 edinput=findViewById(R.id.ed_input); edoutput=findViewById(R.id.ed_output); //设置按钮监听 //0-9 mbutton0.setOnClickListener(this); mbutton1.setOnClickListener(this); mbutton2.setOnClickListener(this); mbutton3.setOnClickListener(this); mbutton4.setOnClickListener(this); mbutton5.setOnClickListener(this); mbutton6.setOnClickListener(this); mbutton7.setOnClickListener(this); mbutton8.setOnClickListener(this); mbutton9.setOnClickListener(this); //c、del、预留 mbuttonc.setOnClickListener(this); mbuttondel.setOnClickListener(this); mbuttonyuliu.setOnClickListener(this); //加减乘除、点、等号 mbuttonjia.setOnClickListener(this); mbuttonjian.setOnClickListener(this); mbuttoncheng.setOnClickListener(this); mbuttonchu.setOnClickListener(this); mbuttondeng.setOnClickListener(this); mbuttondian.setOnClickListener(this); } @Override public void onClick(View view) { String input = edinput.getText().toString(); String output = edoutput.getText().toString(); switch (view.getId()){ //0-9 case R.id.button0: case R.id.button1: case R.id.button2: case R.id.button3: case R.id.button4: case R.id.button5: case R.id.button6: case R.id.button7: case R.id.button8: case R.id.button9: case R.id.buttondian: if(deng_flag){ deng_flag=false; edinput.setText(null); edinput.setText(((Button) view).getText()); }else { edinput.setText(input+((Button) view).getText()); } edinput.setText(input+((Button) view).getText()); break; //c case R.id.buttonc: edinput.setText(null); edoutput.setText(null); break; //del case R.id.buttondel: if (deng_flag){ deng_flag=false; edinput.setText(""); }else if(input !=null&&!input.equals("")){ edinput.setText(input.substring(0,input.length()-1)); } break; //预留 case R.id.buttonyuliu: break; //加减乘除 case R.id.buttonjia: case R.id.buttonjian: case R.id.buttoncheng: case R.id.buttonchu: edinput.setText(input+" "+((Button) view).getText()+" "); break; //等号 case R.id.buttondeng:// edinput.setText(input+((Button) view).getText());// break; getResult(); } } private void getResult() { try{ String input = edinput.getText().toString(); int iResult=0; double dResult=0; String cw="错误"; String s1,s2,op;//数字,数字,操作符 s1"4" op"*" s2"5" s1=input.substring(0,input.indexOf(" ")); op=input.substring(input.indexOf(" ")+1,input.indexOf(" ")+2); s2=input.substring(input.indexOf(" ")+3); double d1,d2; d1=Double.parseDouble(s1); d2=Double.parseDouble(s2); if(op.equals("+")){//加 dResult=d1+d2;// edoutput.setText(dResult+""); }else if(op.equals("-")){//减 dResult=d1-d2; } else if (op.equals("*")){//乘 dResult=d1*d2; } else if (op.equals("/")) {//除 if(d2==0){ edoutput.setText(cw+""); } else if (d1==0) { dResult=0; } else { dResult=d1/d2; } } if(!input.equals(".")&&!input.equals("/")){ iResult=(int)dResult; edoutput.setText(iResult+""); } edoutput.setText(dResult+""); }catch (Exception e){ System.out.println(e); } }}
实现计算器的逻辑代码,包括处理用户输入数字和运算符、进行表达式计算等
三、演示:
在输入框输入计算过程,结果框可呈现计算结果
如图所示:
四、总结
在使用Android Studio和Java语言实现简单的计算器的过程中,我发现了Java语言和Android Studio这两个强大的工具的优点和使用方法,深刻体会到了软件开发的乐趣和挑战性。
首先,Java语言可以帮助开发者快速开发出高效稳定的应用程序,其中尤其强调面向对象的思想和编写高质量的代码。在这个应用程序中我使用了Java语言编写逻辑代码,并采用了面向对象的编程方式,将各种计算功能分别封装成函数,并结合类的实例化来实现计算器的基本功能,这大大提高了程序的代码质量和可重用性。在编写代码的过程中,我需要认真思考代码的逻辑性和完成度等问题,必须一步一步地解决问题。这种过程可以锻炼我的逻辑思维和解决问题的能力。
其次,Android Studio作为一种高级的开发工具,可以有效提高程序员的开发效率,例如代码提示和自动补全、调试以及丰富的开发库和插件等等。同时,Android Studio还提供了一些强大的工具,例如布局编辑器、调试器、生成APK、发布应用程序等等,这些工具帮助开发者快速和高效地开发出高质量的应用程序。以及在UI的设计和交互实现中,需要根据用户的习惯和需求,设计出一个方便实用的界面锻炼了我的UI设计能力。在代码的调试和优化中,我需要仔细查找和解决各种可能出现的问题,精益求精,让代码更加稳定和高效。这锻炼了我的耐心和细节把控能力
总的来说,在使用Android Studio和Java语言实现简单的计算器的过程中,我受益匪浅,不仅让我深入了解了Java语言和应用程序的开发流程、设计思路和实现技巧,还让我认识到了软件开发的妙趣和难度。我相信,通过不断努力和学习,我将能够编写出更加优秀、实用和高效的应用程序。
来源地址:https://blog.csdn.net/m0_75142445/article/details/131310153