Android平台上的计算器APP(付源码)

2022-08-17 11:37:39

Android实验

     请实现一个Android平台上的计算器APP,计算器的功能参照Windows的计算器标准版。

实验工具:Eclipse环境

其中两个实现文件:
             1. activity_main.xml
             2. MainActivity.java

注意:这里实现的是两个数的操作


源文件如下:

(1)activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:height="80dp"
        android:textSize="30sp" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="*" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_cle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_span="2"
                android:onClick="onClick"
                android:text="CLEAR" />

            <Button
                android:id="@+id/btn_del"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_span="2"
                android:onClick="onClick"
                android:text="←" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="7" />

            <Button
                android:id="@+id/btn_8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="8" />

            <Button
                android:id="@+id/btn_9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="9" />

            <Button
                android:id="@+id/btn_div"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="÷" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="4" />

            <Button
                android:id="@+id/btn_5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="5" />

            <Button
                android:id="@+id/btn_6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="6" />

            <Button
                android:id="@+id/btn_mul"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="×" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="1" />

            <Button
                android:id="@+id/btn_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="2" />

            <Button
                android:id="@+id/btn_3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="3" />

            <Button
                android:id="@+id/btn_sub"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="-" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_point"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="." />

            <Button
                android:id="@+id/btn_0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="0" />

            <Button
                android:id="@+id/btn_equ"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="=" />

            <Button
                android:id="@+id/btn_add"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="+" />
        </TableRow>
    </TableLayout>

</LinearLayout>

(2) MainActivity.java

package com.example.calculation;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
    private TextView textView;
    private String str;
    private String num1;
    private String num2;
    private double result;
    private boolean addNum;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.textView);
        addNum = true;
    }

    // 注册点击事件——单击一下就调用一下getResult函数
    public void onClick(View v){  // v获取的是控件的id号
        str = (String) textView.getText();
        switch (v.getId()) {
            case R.id.btn_cle:
                textView.setText("");   //清空
                break;
            case R.id.btn_del:
                if(!str.equals("") && str != null){
                    textView.setText(str.substring(0, str.length()-1));  // 裁剪字符
                }
                break;
            case R.id.btn_equ:
                if(str.contains("+")){
                    getResult(num1, num2, "+");
                }
                else if(str.contains("-")){
                    getResult(num1, num2, "-");
                }
                else if(str.contains("×")){
                    getResult(num1, num2, "×");
                }
                else if(str.contains("÷")){
                    getResult(num1, num2, "÷");
                }
                else {
                    return;
                }
                break;
            case R.id.btn_add:
            case R.id.btn_sub:
            case R.id.btn_mul:
            case R.id.btn_div:
                if (str.contains("+")||str.contains("-")||str.contains("×")||str.contains("÷"))
                    return;    // 防止出现多个符号
                else  // 只出现一个符号
                    textView.setText(str+((Button)v).getText());   //在原来的基础上添加符号
                
                if(!addNum)  // 不能添加数字的话,改为可以添加数字
                    addNum = true;
                break;
            default:  // 点击的是数字或者是小数点
            	/* 
            	 1.未运算出结果,处于运算过程中 
            	 2. 运算出结果,然后输出的数字直接替换原来的result,开始新的运行)
            	*/
                if (addNum) {
                    textView.setText(str+((Button)v).getText());   //在原来的基础上添加数字
                }else{
                    textView.setText(((Button)v).getText());
                    addNum = true;
                }
                break;
        }
    }
    
    private void getResult(String num1, String num2,String op) { //op是符号
        num1 = str.substring(0,str.indexOf(op));
        num2 = str.substring(str.indexOf(op)+1);
        try {
        	// 转换类型
            double n1 = Double.parseDouble(num1);
            double n2 = Double.parseDouble(num2);
            
            if (op.equals("+")) {
                result = n1+n2;
            }else if(op.equals("-")){
                result = n1-n2;
            }else if(op.equals("×")){
                result = n1*n2;
            }else if(op.equals("÷")){
                result = n1/n2;
            }else {
                return;
            }

            String r = result+"";     // 数据类型转换
          //由于result是double类型,因此我们要做出一些处理,如:5+7=12.0 截取为 12
           if(r.contains(".")&&r.substring(r.length()-1).equals("0")){ 
                r = r.substring(0,r.indexOf("."));
            }
            textView.setText(r);
            addNum = false;     //运算结束后再点击数,就进行click函数的 default —— else 操作
        } catch (Exception e) {
            return;
        }
    }
}
运行效果:





  • 作者:请叫我小吴
  • 原文链接:https://blog.csdn.net/haoxuexiaolang/article/details/78907261
    更新时间:2022-08-17 11:37:39