IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> [java] [android] 简易(简陋)计算器 -> 正文阅读

[移动开发][java] [android] 简易(简陋)计算器

p.s.

java不是我常用的语言,写得可能不咋地
额…因为习惯问题所以会说函数而不是方法

思路

  1. 计算器(应该)有2个数,这里命名为number1和number2,输入步骤是:number1->运算符(也许叫这个???)->number2,当前输入用input_index表示
  2. 这里用String类型的原因是为DEL按钮(假装有)做铺垫,因为整数的退格还好说,但是如果是小数就会非常麻烦,所以干脆转换为String,直接截取字符串就行了
  3. 因为对每个事件写相同代码太麻烦了,所以用函数
  4. 看起来是个超级长,超级难理解的函数
public void onNumberButtonClick(String num) {
        if ((input_index == 0) || (input_index == 1)) {
            input_index = 1;
            if (number1 == "0") {
                if (num != "00") {
                    if (num == ".") {
                        if (!number1.contains(".")) {
                            number1 += num;
                        }
                    } else {
                        number1 = num;
                    }
                }
            } else {
                if (num == ".") {
                    if (!number1.contains(".")) {
                        number1 += num;
                    }
                } else {
                    number1 = num;
                }
            }
        } else if (input_index == 2) {
            if (number2 == "0") {
                if (num != "00") {
                    if (num == ".") {
                        if (!number2.contains(".")) {
                            number2 += num;
                        }

                    } else {
                        number2 = num;
                    }
                }
            } else {
                if (num == ".") {
                    if (!number2.contains(".")) {
                        number2 += num;
                    }
                } else {
                    number2 = num;
                }
            }
        }
        update();
    }

按钮中有2个特殊按钮——“.”和“00”
当number1为“0”的时候,输入00就会变成“00”,所以不行(不知道会不会报错,但是不能冒这个险)
如果通过了,就进入下一个——.
如果不加以限制,就可能变成“0…”,这很明显不对

之后就没什么好讲的了,只要不忘记调用update()函数就行

最后成品

最后成品

代码

MainActivity.java

package com.Diamond.Calculator.ui.activity;

import android.os.Bundle;
import com.Diamond.Calculator.R;
import com.Diamond.Calculator.common.activity.BaseActivity;
import android.widget.Button;
import android.view.*;
import android.widget.TextView;
import android.util.Log;
import java.lang.Boolean;
import java.lang.Object;
import java.util.Random;
import java.time.*;
import android.util.TimeUtils;
import java.security.Timestamp;

public class MainActivity extends BaseActivity { 
    private String number1;
    private String number2;
    private String ans;
    private int input_index;
    private String op;

    private TextView textDisplay;
    private Button numberButton0;
    private Button numberButtonPoint;
    private Button numberButton00;
    private Button numberButton1;
    private Button numberButton2;
    private Button numberButton3;
    private Button numberButton4;
    private Button numberButton5;
    private Button numberButton6;
    private Button numberButton7;
    private Button numberButton8;
    private Button numberButton9;
    private Button operatorButtonPlus;
    private Button operatorButtonMinus;
    private Button operatorButtonMultiply;
    private Button operatorButtonDivide;
    private Button operatorButtonEqual;
    private Button randomButton;
    private Button ansButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        number1 = "0";
        number2 = "0";
        input_index = 1;
        op = new String();

        textDisplay = (TextView)findViewById(R.id.activitymainTextDisplay);
        numberButton0 = (Button)findViewById(R.id.activitymainNumberButton0);
        numberButtonPoint = (Button)findViewById(R.id.activitymainNumberButtonPoint);
        numberButton00 = (Button)findViewById(R.id.activitymainNumberButton00);
        numberButton1 = (Button)findViewById(R.id.activitymainNumberButton1);
        numberButton2 = (Button)findViewById(R.id.activitymainNumberButton2);
        numberButton3 = (Button)findViewById(R.id.activitymainNumberButton3);
        numberButton4 = (Button)findViewById(R.id.activitymainNumberButton4);
        numberButton5 = (Button)findViewById(R.id.activitymainNumberButton5);
        numberButton6 = (Button)findViewById(R.id.activitymainNumberButton6);
        numberButton7 = (Button)findViewById(R.id.activitymainNumberButton7);
        numberButton8 = (Button)findViewById(R.id.activitymainNumberButton8);
        numberButton9 = (Button)findViewById(R.id.activitymainNumberButton9);
        operatorButtonPlus = (Button)findViewById(R.id.activitymainOperatorButtonPlus);
        operatorButtonMinus = (Button)findViewById(R.id.activitymainOperatorButtonMinus);
        operatorButtonMultiply = (Button)findViewById(R.id.activitymainOperatorButtonMultiply);
        operatorButtonDivide = (Button)findViewById(R.id.activitymainOperatorButtonDivide);
        operatorButtonEqual = (Button)findViewById(R.id.activitymainOperatorButtonEqual);
        randomButton = (Button)findViewById(R.id.activitymainButtonRandom);
        ansButton = (Button)findViewById(R.id.activitymainButtonAns);

        numberButton0.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(0);
                }
            });
        numberButtonPoint.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(".");
                }
            });
        numberButton00.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick("00");
                }
            });
        numberButton1.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(1);
                }
            });
        numberButton2.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(2);
                }
            });
        numberButton3.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(3);
                }
            });
        numberButton4.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(4);
                }
            });
        numberButton5.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(5);
                }
            });
        numberButton6.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(6);
                }
            });
        numberButton7.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(7);
                }
            });
        numberButton8.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(8);
                }
            });
        numberButton9.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onNumberButtonClick(9);
                }
            });
        operatorButtonPlus.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onOperatorButtonClick("+");
                }
            });
        operatorButtonMinus.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onOperatorButtonClick("-");
                }
            });
        operatorButtonMultiply.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onOperatorButtonClick("*");
                }
            });
        operatorButtonDivide.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onOperatorButtonClick("/");
                }
            });
        operatorButtonEqual.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    onOperatorButtonClick("=");
                }
            });
        randomButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    input_index = 0;
                    Random r = new Random(System.currentTimeMillis());
                    ans = new Double(r.nextDouble()).toString();
                    reset(false, 0);
                    update();
                }
            });
        ansButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    if(input_index == 0) {
                        reset(false,1);
                        number1 = ans;
                    } else if (input_index == 1) {
                        number1 = ans;
                    } else {
                        number2 = ans;
                    }
                    update();
                }
            });
    }
    public void onNumberButtonClick(int num) {
        if ((input_index == 0) || (input_index == 1)) {
            input_index = 1;
            if (number1 == "0") {
                number1 = new Integer(num).toString();
            } else {
                number1 += num;
            }
        } else if (input_index == 2) {
            if (number2 == "0") {
                number2 = new Integer(num).toString();
            } else {
                number2 += num;
            }
        }
        update();
        /*Boolean a = number1 == "0";
         Log.i("","number1 == \"0\" is " + String.valueOf(a));*/
    }
    public void onNumberButtonClick(String num) {
        if ((input_index == 0) || (input_index == 1)) {
            input_index = 1;
            if (number1 == "0") {
                if (num != "00") {
                    if (num == ".") {
                        if (!number1.contains(".")) {
                            number1 += num;
                        }
                    } else {
                        number1 = num;
                    }
                }
            } else {
                if (num == ".") {
                    if (!number1.contains(".")) {
                        number1 += num;
                    }
                } else {
                    number1 = num;
                }
            }
        } else if (input_index == 2) {
            if (number2 == "0") {
                if (num != "00") {
                    if (num == ".") {
                        if (!number2.contains(".")) {
                            number2 += num;
                        }

                    } else {
                        number2 = num;
                    }
                }
            } else {
                if (num == ".") {
                    if (!number2.contains(".")) {
                        number2 += num;
                    }
                } else {
                    number2 = num;
                }
            }
        }
        update();
    }
    public void onOperatorButtonClick(String oper) {
        if (oper != "=") {
            op = oper;
            if (input_index == 1) {
                input_index = 2;
                number2 = "0";
            } else if (input_index == 2) {
                solveResult();
                number1 = ans;
                number2 = "0";
            } else if (input_index == 0) {
                input_index = 2;
                number1 = ans;
                number2 = "0";
            }
        } else {
            solveResult();
            reset(false,0);
        }
        update();
    }
    public void solveResult() {
        double result = new Double(0);
        double num1 = new Double(number1);
        double num2 = new Double(number2);
        if (op == "+") {
            result = num1 + num2;
        }
        else if (op == "-") {
            result = num1 - num2;
        }
        else if (op == "*") {
            result = num1 * num2;
        }
        else if (op == "/") {
            result = num1 / num2;
        }
        ans = ((Double)result).toString();
    }
    public void update() {
        if (input_index == 1) {
            textDisplay.setText(number1);
        } else if (input_index == 2) {
            textDisplay.setText(number1 + op + number2);
        } else {
            textDisplay.setText(ans);
        }

        int textLength = textDisplay.getText().length();
        if (textLength <= 20) {
            textDisplay.setTextSize(50);
        } else if (textLength > 20 && textLength <= 30) {
            textDisplay.setTextSize(40);
        } else if (textLength > 30) {
            textDisplay.setTextSize(30);
        }
        //Log.i("number1",number1);
    }
    public void reset(Boolean reset_ans, int ii) {
        number1 = "0";
        number2 = "0";
        if (reset_ans) {
            ans = "0";
        }
        input_index = ii;
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:orientation="vertical">

	<ScrollView
		android:layout_width="match_parent"
		android:layout_height="150dp">

		<TextView
			android:layout_width="match_parent"
			android:layout_height="match_parent"
			android:text="0"
			android:id="@+id/activitymainTextDisplay"/>

	</ScrollView>

	<LinearLayout
		android:orientation="horizontal"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:layout_weight="1.0">

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="7"
			android:layout_weight="1"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton7"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="8"
			android:layout_weight="1"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton8"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="9"
			android:layout_weight="1"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton9"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="+"
			android:layout_weight="1"
			android:textSize="30sp"
			android:id="@+id/activitymainOperatorButtonPlus"/>

	</LinearLayout>

	<LinearLayout
		android:orientation="horizontal"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:layout_weight="1.0">

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="4"
			android:layout_weight="1"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton4"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="5"
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton5"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="6"
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton6"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="-"
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainOperatorButtonMinus"/>

	</LinearLayout>

	<LinearLayout
		android:orientation="horizontal"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:layout_weight="1.0">

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="1"
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton1"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="2"
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton2"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="3"
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton3"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="*"
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainOperatorButtonMultiply"/>

	</LinearLayout>

	<LinearLayout
		android:orientation="horizontal"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:layout_weight="1.0">

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="0"
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton0"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="."
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButtonPoint"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="00"
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainNumberButton00"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="/"
			android:layout_weight="1.0"
			android:textSize="30sp"
			android:id="@+id/activitymainOperatorButtonDivide"/>

	</LinearLayout>

	<LinearLayout
		android:orientation="horizontal"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:layout_weight="1.0">

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="random"
			android:layout_weight="1.0"
			android:id="@+id/activitymainButtonRandom"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="ans"
			android:layout_weight="1.0"
			android:textSize="20sp"
			android:id="@+id/activitymainButtonAns"/>

		<Button
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:text="="
			android:layout_weight="10"
			android:textSize="40sp"
			android:id="@+id/activitymainOperatorButtonEqual"/>

	</LinearLayout>

</LinearLayout>


  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 12:06:28  更:2021-10-17 12:08:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:32:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码