博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android——计算器第一次完善
阅读量:7049 次
发布时间:2019-06-28

本文共 8172 字,大约阅读时间需要 27 分钟。

完善:

1- 处理首位为0

2- 处理首位为“.”

3- 处理前两位为“0.”,此时首位为0,但是不能处理

4- 处理小数点不能重复输入

发现bug:12.3x6 = 如下图: 

 

xml

//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//列 行权重为1
//跨两行 自动填充 绿色 列权重1 行权重2
//跨两列 自动填充 列权重2 行权重1
//列 行 权重1

java

package com.example.chenshuai.test322;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;/** * Created by chenshuai anniu1 2016/3/26. */public class Activity2 extends AppCompatActivity implements View.OnClickListener{    EditText et;    Button bt_clear;    Button bt_goback;    Button bt_1;    Button bt_2;    Button bt_3;    Button bt_4;    Button bt_5;    Button bt_6;    Button bt_7;    Button bt_8;    Button bt_9;    Button bt_0;    Button jia;    Button jian;    Button cheng;    Button chu;    Button result;    Button dian;    //显示屏 全局变量    //存储显示的内容    //StringBuilder 操作字符串的工具类    private StringBuilder str_show = new StringBuilder();    //当前运算符按钮的id    private int id_yunsf = 0;    //保存输入的值 用包装类,基本数值类型不能判断为空    private Double number_1;//运算符前面的数值    private Double number_2;//运算符后面的数值    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.gridlayout);        //实例化监听器        et = (EditText)findViewById(R.id.et);        bt_1 = (Button)findViewById(R.id.bt_1);        bt_2= (Button)findViewById(R.id.bt_2);        bt_3 = (Button)findViewById(R.id.bt_3);        bt_4= (Button)findViewById(R.id.bt_4);        bt_5 = (Button)findViewById(R.id.bt_5);        bt_6= (Button)findViewById(R.id.bt_6);        bt_7 = (Button)findViewById(R.id.bt_7);        bt_8= (Button)findViewById(R.id.bt_8);        bt_9 = (Button)findViewById(R.id.bt_9);        bt_0= (Button)findViewById(R.id.bt_0);        jia = (Button)findViewById(R.id.jia);        jian= (Button)findViewById(R.id.jian);        cheng = (Button)findViewById(R.id.cheng);        chu= (Button)findViewById(R.id.chu);        result = (Button)findViewById(R.id.result);        dian= (Button)findViewById(R.id.dian);        bt_clear = (Button)findViewById(R.id.bt_clear);        bt_goback= (Button)findViewById(R.id.bt_goback);        bt_0.setOnClickListener(this);        bt_1.setOnClickListener(this);        bt_2.setOnClickListener(this);        bt_3.setOnClickListener(this);        bt_4.setOnClickListener(this);        bt_5.setOnClickListener(this);        bt_6.setOnClickListener(this);        bt_7.setOnClickListener(this);        bt_8.setOnClickListener(this);        bt_9.setOnClickListener(this);        jia.setOnClickListener(this);        jian.setOnClickListener(this);        cheng.setOnClickListener(this);        chu.setOnClickListener(this);        dian.setOnClickListener(this);        result.setOnClickListener(this);        bt_goback.setOnClickListener(this);        bt_clear.setOnClickListener(this);    }    //View 事件源组件    public void onClick(View v)    {        Button bt = (Button)v;        int id = bt.getId();        switch (id)        {            case R.id.bt_clear:                //重新实例化,实现清除                str_show = new StringBuilder();                et.setText(str_show);                number_1 = null;                number_2 = null;                id_yunsf = 0;                break;            case R.id.bt_goback:                //防止删到最后一个                if(str_show.length()>0)                //实现后退 索引值从0开始 删除最后一个字符                {                    str_show.deleteCharAt(str_show.length() - 1);                    et.setText(str_show);                }                break;            case R.id.bt_0:            case R.id.bt_1:            case R.id.bt_2:            case R.id.bt_3:            case R.id.bt_4:            case R.id.bt_5:            case R.id.bt_6:            case R.id.bt_7:            case R.id.bt_8:            case R.id.bt_9:              if (id !=R.id.bt_0                        ||(id==R.id.bt_0 && !str_show.toString().equals("0"))                        )              {                  str_show.append(bt.getText());                  //长度大于等于2,截取第一位,判断为0的话,字符串从第一位开始截取,实现首位不为0,                  // 同时判断第二位是否是点,如果输入的是"0."对首位为0不再操作                  if (str_show.length() >= 2) {                      //首位不为0                      String shouwei = str_show.substring(0, 1);                      String second = str_show.substring(1,2);                      //首位不为0,第二位不为点                      if (shouwei.equals("0") && !second.equals(".") ) {                          //et.setText(str_show.substring(1));                          String dian = str_show.substring(1);                          et.setText(dian);                          }                      else { et.setText(str_show);  }                  }                  else { et.setText(str_show);  }              }                break;            case R.id.dian:                //判断.是否存在 如果不存在                if (str_show.indexOf(".") == -1)                    {                        //先把输入的值放进来再判断                        str_show.append(bt.getText());                        //第一次输入的是'.',转换为'0.'                        if (str_show.substring(0,1).equals("."))                        {                            str_show.replace(0, 1, "0.");                        }                        //str_show.append(bt.getText());                    }                    else                    {                    }                et.setText(str_show);                break;            case R.id.result:            case R.id.jia:            case R.id.jian:            case R.id.cheng:            case R.id.chu:               //前面值是空,转换一下                if (number_1==null)                {                    //运算符不能在第一个                    if (str_show.length()>0)                    {                        number_1 = new Double(str_show.toString());                        id_yunsf = bt.getId();                        //重新实例化,实现清除                        str_show = new StringBuilder();                        //et.setText(str_show);                    }                }                else//直接计算                {                    if (str_show.length()>0)                    {                        //运算符后边的内容赋值                        number_2 = new Double(str_show.toString());                    }                    //判断运算符                    switch (id_yunsf)                    {                        case R.id.jia:                            //运算                            number_1  = number_1.doubleValue() + number_2.doubleValue();                            break;                        case R.id.jian:                            //运算   //结果给number_1                            number_1 = number_1.doubleValue() - number_2.doubleValue();                            break;                        case R.id.cheng:                            //运算   //结果给number_1                            number_1 = number_1.doubleValue() * number_2.doubleValue();                            break;                        case R.id.chu:                            //运算   //结果给number_1                            if (number_2 !=0)                            {                                number_1 = number_1.doubleValue() / number_2.doubleValue();                            }                            else                            {                                Toast.makeText(this,"不能除0",Toast.LENGTH_LONG).show();                            }                            break;                    }                    //记录运算符                    id_yunsf=bt.getId();                    //显示当前运算结果                    et.setText(number_1.toString());                    //清空                    str_show = new StringBuilder();                }                break;        }    }}

 

转载地址:http://eddol.baihongyu.com/

你可能感兴趣的文章
使用asp.net调用谷歌地图api
查看>>
文件读取输入
查看>>
Mysql5.7初始化成空密码或随机密码的方式
查看>>
贝中斯公式相关知识
查看>>
UseAdaptiveSizePolicy与CMS垃圾回收同时使用导致的JVM报错
查看>>
编程生涯
查看>>
WebStorm设置编辑器中的字体大小
查看>>
JAVA 8 默认方法-Default Methods
查看>>
Eclipse启动时选择workspace设置
查看>>
左图有文本,图片自由缩放
查看>>
SQL Server中的锁
查看>>
js时间戳格式化成日期格式的多种方法
查看>>
gdb fabs错误输出
查看>>
jquery-plugin-biggerLink,highLight-层加亮_andy 阳光生活_百度空间
查看>>
最快破亿还是荣耀,这是年轻人的狂欢
查看>>
西藏世界级英雄史诗《格萨尔》藏译汉项目已出版15部书籍
查看>>
远海星空什么样?远望7号带你看银河
查看>>
深入理解javascript系列(十五):高阶函数
查看>>
客户端动态化系列之——Weex
查看>>
BCTF Writeup
查看>>