Android写一个简易计算器(可以实现连续计算)

本文介绍了一个使用Android开发的简易计算器应用,通过EditText展示运算步骤并进行字符串解析,支持连续计算。主要思路是利用两个EditText分别保存运算步骤和数字,通过数组管理操作数,进行类型转换时需谨慎。目前存在运算无优先级、重复点击运算符导致闪退及正负数转换未实现等小问题,待后续修复。
摘要由CSDN通过智能技术生成

发一个库存程序,好像是几个礼拜之前写的吧,是一个用安卓实现的简易的计算器,写这个小程序之前,看了很多人写的计算器,觉得使用一个 EditText,并将它设置为不可编写,是比较好的解决方案。

设计思路主要是: 根据用户的点击,在一个 EditText 中显示用户输入的运算步骤,例如 1 * 5 + 8 - 5 , 这个运算步骤首先是字符串类型的,然后在经过系列步骤将字符串解析成为相应的实数计算,最终得出结果

我是用了两个 EditText ,第一个显示运算步骤(字符串类型),第二个专门用了保存要参与运算的数字,并实时对这个数字进行更新;

对于:“操作数 操作运算符 操作数”,可以定义一个数组来保存这两操作数,进行运算之后,将结果存储到数组的第一个元素,方便进行连续运算,然后下一个操作数存储到数组的第二个元素,‘’‘’ 这样就实现了连续运算

在实现的过程当中,多处用到了类型转换,从字符串转换成浮点数,从浮点数转换成字符串等,进行类型转换是要特别小心,我就是因为类型转换是写错了,查bug查了老半天
效果图就是这样滴:
在这里插入图片描述
有几个小bug带修复:
1.运算没有优先级,完全是按用户输入的步骤来进行运算
2.连续按两次运算操作符会闪退,刚开始是按操作符也会闪退
3.其中的正负数转换按钮还没实行
由于最近要期中考试了,所以这几个小bug过一段时间再来修复,到时再更新
下面是代码:

MainActivity.java 文件

package com.example.calculator;

import android.content.Intent;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
   

    getResult2 result2 = new getResult2();


    Button button0;
    Button button1;
    Button button2;
    Button button3;
    Button button4;
    Button button5;
    Button button6;
    Button button7;
    Button button8;
    Button button9;
    Button button_point;        //小数点
    Button button_clear;        //清空


    //2个imageButton
    Button button_plus;
    Button button_minus;
    Button button_mutiply;
    Button button_divide;
    ImageButton button_equal;        //等于
    ImageButton button_delete;       //删除(退格)

    EditText edit_input;        //输入框
    EditText editText2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
   
            actionBar.hide();
        }
        ImageButton imageButton1 = (ImageButton) findViewById(R.id.title_imageButton1);
        imageButton1.setOnClickListener(new View.OnClickListener() {
   
            @Override
            public void onClick(View v) {
   
                Intent intent = new Intent(MainActivity.this, SetActivity.class);
                startActivity(intent);
            }
        });


        //实例化按钮
        button0 = (Button) findViewById(R.id.button0);
        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);
        button4 = (Button) findViewById(R.id.button4);
        button5 = (Button) findViewById(R.id.button5);
        button6 = (Button) findViewById(R.id.button6);
        button7 = (Button) findViewById(R.id.button7);
        button8 = (Button) findViewById(R.id.button8);
        button9 = (Button) findViewById(R.id.button9);
        button_point = (Button) findViewById(R.id.button_point);
        button_clear = (Button) findViewById(R.id.button_clear);
        button_plus = (Button) findViewById(R.id.button_plus);
        button_minus = (Button) findViewById(R.id.button_minus);
        button_mutiply = (Button) findViewById(R.id.button_mutiply);
        button_divide = (Button) findViewById(R.id.button_divide);
        button_equal = (ImageButton) findViewById(R.id.button_equal);
        button_delete = (ImageButton) findViewById(R.id.button_delete);
        edit_input = (EditText) findViewById(R.id.main_ediText);
        editText2 = (EditText) findViewById(R.id.edtiText2);

        //设置点击事件
        button0.setOnClickListener((View.OnClickListener) this);
        button1.setOnClickListener((View.OnClickListener) this);
        button2.setOnClickListener((View.OnClickListener) this);
        button3.setOnClickListener((View.OnClickListener) this);
        button4.setOnClickListener((View.OnClickListener) this);
        button5.setOnClickListener((View.OnClickListener) this);
        button6.setOnClickListener((View.OnClickListener) this);
        button7.setOnClickListener((View.OnClickListener) this);
        button8.setOnClickListener((View.OnClickListener) this);
        button9.setOnClickListener((View.OnClickListener) this);
        button_point.setOnClickListener((View.OnClickListener) this);
        button_clear.setOnClickListener((View.OnClickListener) this);
        button_plus.setOnClickListener((View.OnClickListener) this);
        button_minus.setOnClickListener((View.OnClickListener) this);
        button_mutiply
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值