Android简易计算器

一、界面

界面的实现在参照课本例子的基础上,做了部分改动。总体使用GridLayout布局,设置7行4列。两个TextView组件分别显示输入的算式和计算结果,以及一个清除键,这三个组件分别占据一整行即4列的空间。下方数字0~9、符号+ - * / = . 等Button组件,每行四个按钮平均分布。

 

二、功能

第一次做简易计算器,暂时只能完成两个数之间的加减乘除运算,不能进行负数的运算,多个数的混合运算需要考虑运算的优先级问题,有待之后完善。

界面实现后就是对计算器的逻辑实现。首先在MainActivity中对各个控件进行控件实例化,并设置监听事件,使用实现接口的方式来实现监听事件。

使用switch判断按钮,将字符添加到算式字符串中,按“=”调用一个getResult()方法计算结果并显示。

三、源代码

strings.xml


    计算器
    
    
    AC
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .
    +
    -
    *
    /
    =

界面 




    
    
    

MainActivity.java

package com.example.calculator;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    boolean end; //计算是否结束
    TextView tv1,tv2;
    Button [] buttons = new Button[17];
    int [] btnID = new int[]{R.id.btn0,R.id.btn1,R.id.btn2,R.id.btn3,R.id.btn4,R.id.btn5,
            R.id.btn6,R.id.btn7,R.id.btn8,R.id.btn9,R.id.btnClear,R.id.btnPlus,R.id.btnMinus,
            R.id.btnMultiply,R.id.btnDivide,R.id.btnPoint,R.id.btnEqual};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv1 = (TextView)findViewById(R.id.txt1);
        tv2 = (TextView)findViewById(R.id.txt2);
        for (int i=0;i以下是开发过程中遇到的问题以及最后采取的解决办法:

1. 原本根据课本的布局示例,按键右方离屏幕边缘有很大的空白区域,按键没有平分屏幕宽度。

解决方法:每个Button组件加上          android:layout_columnWeight="1"

使Button的权重相同,就能平均分布。

Android简易计算器_第1张图片               Android简易计算器_第2张图片 

2. 在源码MainActivity.java中,计算结果的方法getResult()内,从算式字符串中截取出两个数和一个运算符后(仍是字符串),将两个数的字符串分别通过Double.parseDouble()转换为double型数据。这一步原本在截取出字符串后和用if判断前,运行时一旦输入不满足两个数运算,计算时就会闪退。后将数据类型转换移动到if内部即解决。

 

 

 

你可能感兴趣的:(Android)