赞
踩
目录
学习目标:根据课程所学的相关知识,完成一个简易的计算器,并实现一定的功能。
工具环境:Android studio、Java语言
实现功能:
1.完成简单的页面布局,要有数字、加、减、乘、除、删除、清零等基本按钮
2.完成后台对有关功能的基本实现
1.新建一个Android Studio项目,并创建一个Activity用于显示计算器的UI界面
2.在布局文件中添加TextView用于显示用户输入的表达式和计算结果,以及多个Button控件用于用户的操作。
一、布局使用GridLayout完成布局:
1.整体布局放一个GridLayout,其中:
(1)第一个GridLayout放入两个编辑框,作为计算器的结果框和输入过程框
- <GridLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- >
- <EditText
- android:id="@+id/ed_input"
- android:layout_width="match_parent"
- android:layout_height="100dp"
- android:hint="输入框"
- />
- <EditText
- android:id="@+id/ed_output"
- android:layout_width="match_parent"
- android:layout_height="100dp"
- android:hint="输出口"
- />
- </GridLayout>

(2)第二个GridLayout放入操作的按钮
- <GridLayout
- android:layout_width="match_parent"
- android:layout_height="304dp"
- android:columnCount="4"
- android:rowCount="4">
-
- <Button
- android:id="@+id/buttonc"
- android:layout_width="180dp"
- android:layout_height="60dp"
- android:layout_columnSpan="2"
- android:backgroundTint="#a6a6a6"
- android:text="c" />
-
- <Button
- android:id="@+id/buttondel"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:layout_columnSpan="1"
- android:backgroundTint="#a6a6a6"
- android:text="DEL" />
-
- <Button
- android:id="@+id/buttonchu"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#ff9500"
- android:text="/" />
-
- <Button
- android:id="@+id/button7"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="7" />
-
- <Button
- android:id="@+id/button8"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="8" />
-
- <Button
- android:id="@+id/button9"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="9" />
-
- <Button
- android:id="@+id/buttoncheng"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#ff9500"
- android:text="*" />
-
- <Button
- android:id="@+id/button4"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="4" />
-
- <Button
- android:id="@+id/button5"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="5" />
-
- <Button
- android:id="@+id/button6"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="6" />
-
- <Button
- android:id="@+id/buttonjian"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#ff9500"
- android:text="-" />
-
- <Button
- android:id="@+id/button1"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="1" />
-
- <Button
- android:id="@+id/button2"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="2" />
-
- <Button
- android:id="@+id/button3"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="3" />
-
- <Button
- android:id="@+id/buttonjia"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#ff9500"
- android:text="+" />
-
- <Button
- android:id="@+id/buttonyuliu"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="预留" />
-
- <Button
- android:id="@+id/button0"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="0" />
-
- <Button
- android:id="@+id/buttondian"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#333333"
- android:text="." />
-
- <Button
- android:id="@+id/buttondeng"
- android:layout_width="90dp"
- android:layout_height="60dp"
- android:backgroundTint="#ff9500"
- android:text="=" />
-
-
- </GridLayout>

布局样式大致如图所示:
二、部分代码解释:
1.为相应的按钮添加id
2.完善布局美观
通过布局绑定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语言和应用程序的开发流程、设计思路和实现技巧,还让我认识到了软件开发的妙趣和难度。我相信,通过不断努力和学习,我将能够编写出更加优秀、实用和高效的应用程序。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。