首页 > 其他分享 >『江鸟中原』鸿蒙——计算器

『江鸟中原』鸿蒙——计算器

时间:2023-12-08 21:01:54浏览次数:34  
标签:江鸟 map 鸿蒙 Button private ResourceTable 计算器 put Id

鸿蒙期末大作业


1、简介

使用开发工具DevEco studio,用java语言编写一个简单的应用——计算机,本应用能够进行简单的加、减、乘、除混合运算。


2、成果展示

『江鸟中原』鸿蒙——计算器_鸿蒙大作业



『江鸟中原』鸿蒙——计算器_鸿蒙大作业_02


3、

设计计算器各个按钮

private void initData() {
    if (map == null)
        map = new HashMap<Component, String>();
    map.put(mAddBtn, "+");
    map.put(mMultiplyBtn, "*");
    map.put(mDividebtn, "/");
    map.put(mSubBtn, "-");
    map.put(mZeroButton, "0");
    map.put(mOnebtn, "1");
    map.put(mTwoBtn, "2");
    map.put(mThreeBtn, "3");
    map.put(mFourBtn, "4");
    map.put(mFiveBtn, "5");
    map.put(mSixBtn, "6");
    map.put(mSevenBtn, "7");
    map.put(mEightBtn, "8");
    map.put(mNineBtn, "9");
    map.put(mPointtn, ".");
    map.put(mEqualBtn, "=");
    mInputList = new ArrayList<>();
    mShowResultTv.setText("");
    clearAllScreen();
}

部分代码

public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {


    private TextField mShowResultTv;
    private Text mShowInputTv;
    private Button mCBtn;
    private Button mDelBtn;
    private Button mAddBtn;
    private Button mSubBtn;
    private Button mMultiplyBtn;
    private Button mDividebtn;
    private Button mZeroButton;
    private Button mOnebtn;
    private Button mTwoBtn;
    private Button mThreeBtn;
    private Button mFourBtn;
    private Button mFiveBtn;
    private Button mSixBtn;
    private Button mSevenBtn;
    private Button mEightBtn;
    private Button mNineBtn;
    private Button mPointtn;
    private Button mEqualBtn;
    private HashMap<Component, String> map;
    private List<InputItem> mInputList;
    private int mLastInputstatus = INPUT_NUMBER;
    public static final int INPUT_NUMBER = 1;
    public static final int INPUT_POINT = 0;
    public static final int INPUT_OPERATOR = -1;
    public static final int END = -2;
    public static final int ERROR = -3;
    public static final int SHOW_RESULT_DATA = 1;
    public static final String nan = "NaN";
    public static final String infinite = "??";


    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
    }

    @Override
    public void onActive() {
        super.onActive();
        initView();
        initData();
    }


    private void initView() {
        mShowResultTv = this.findComponentById(ResourceTable.Id_show_result_tv);
        mShowInputTv = this.findComponentById(ResourceTable.Id_show_input_tv);
        mCBtn = this.findComponentById(ResourceTable.Id_c_btn);
        mDelBtn = this.findComponentById(ResourceTable.Id_del_btn);
        mAddBtn = this.findComponentById(ResourceTable.Id_add_btn);
        mMultiplyBtn = (Button) this.findComponentById(ResourceTable.Id_multiply_btn);
        mDividebtn = (Button) this.findComponentById(ResourceTable.Id_divide_btn);
        mZeroButton = (Button) this.findComponentById(ResourceTable.Id_zero_btn);
        mOnebtn = (Button) this.findComponentById(ResourceTable.Id_one_btn);
        mTwoBtn = (Button) this.findComponentById(ResourceTable.Id_two_btn);
        mThreeBtn = (Button) this.findComponentById(ResourceTable.Id_three_btn);
        mFourBtn = (Button) this.findComponentById(ResourceTable.Id_four_btn);
        mFiveBtn = (Button) this.findComponentById(ResourceTable.Id_five_btn);
        mSixBtn = (Button) this.findComponentById(ResourceTable.Id_six_btn);
        mSevenBtn = (Button) this.findComponentById(ResourceTable.Id_seven_btn);
        mEightBtn = (Button) this.findComponentById(ResourceTable.Id_eight_btn);
        mNineBtn = (Button) this.findComponentById(ResourceTable.Id_nine_btn);
        mPointtn = (Button) this.findComponentById(ResourceTable.Id_point_btn);
        mEqualBtn = (Button) this.findComponentById(ResourceTable.Id_equal_btn);
        mSubBtn = (Button) this.findComponentById(ResourceTable.Id_sub_btn);
        setClickedListener();

    }


    private void initData() {
        if (map == null)
            map = new HashMap<Component, String>();
        map.put(mAddBtn, "+");
        map.put(mMultiplyBtn, "*");
        map.put(mDividebtn, "/");
        map.put(mSubBtn, "-");
        map.put(mZeroButton, "0");
        map.put(mOnebtn, "1");
        map.put(mTwoBtn, "2");
        map.put(mThreeBtn, "3");
        map.put(mFourBtn, "4");
        map.put(mFiveBtn, "5");
        map.put(mSixBtn, "6");
        map.put(mSevenBtn, "7");
        map.put(mEightBtn, "8");
        map.put(mNineBtn, "9");
        map.put(mPointtn, ".");
        map.put(mEqualBtn, "=");
        mInputList = new ArrayList<>();
        mShowResultTv.setText("");
        clearAllScreen();
    }


    private void setClickedListener() {
        mCBtn.setClickedListener(this);
        mDelBtn.setClickedListener(this);
        mAddBtn.setClickedListener(this);
        mMultiplyBtn.setClickedListener(this);
        mDividebtn.setClickedListener(this);
        mSubBtn.setClickedListener(this);
        mZeroButton.setClickedListener(this);
        mOnebtn.setClickedListener(this);
        mTwoBtn.setClickedListener(this);
        mThreeBtn.setClickedListener(this);
        mFourBtn.setClickedListener(this);
        mFiveBtn.setClickedListener(this);
        mSixBtn.setClickedListener(this);
        mSevenBtn.setClickedListener(this);
        mEightBtn.setClickedListener(this);
        mNineBtn.setClickedListener(this);
        mPointtn.setClickedListener(this);
        mEqualBtn.setClickedListener(this);
    }


    @Override
    public void onClick(Component arg0) {
        switch (arg0.getId()) {
            case ResourceTable.Id_c_btn:
                clearAllScreen();
                break;
            case ResourceTable.Id_del_btn:
                back();
                break;
            case ResourceTable.Id_point_btn:
                inputPoint(arg0);
                break;
            case ResourceTable.Id_equal_btn:
                operator();
                break;
            case ResourceTable.Id_add_btn:
            case ResourceTable.Id_sub_btn:
            case ResourceTable.Id_multiply_btn:
            case ResourceTable.Id_divide_btn:
                inputOperator(arg0);
                break;
            default:
                inputNumber(arg0);
                break;
        }
    }


    private void operator() {
        if (mLastInputstatus == END || mLastInputstatus == ERROR || mLastInputstatus == INPUT_OPERATOR || mInputList.size() == 1) {
            return;
        }
        mShowResultTv.setText("");
        startAnim();
        findHighOperator(0);
        if (mLastInputstatus != ERROR) {
            findLowOperator(0);
        }

        mShowResultTv.setText(mShowInputTv.getText());
        String str = mInputList.get(0).getInput();
        BigDecimal b = new BigDecimal(str);
        double d = b.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue();
        String res = d + "";
        if (res.endsWith(".0")) {
            res = res.substring(0, res.indexOf("."));
        }
        mShowInputTv.setText(res);
        clearScreen(mInputList.get(0));
    }

    private void startAnim() {
        mShowInputTv.setText(mShowInputTv.getText() + "=");
    }

    private void inputPoint(Component view) {
        if (mLastInputstatus == INPUT_POINT) {
            return;
        }
        if (mLastInputstatus == END || mLastInputstatus == ERROR) {
            clearInputScreen();
        }
        String key = map.get(view);
        String input = mShowInputTv.getText().toString();
        if (mLastInputstatus == INPUT_OPERATOR) {
            input = input + "0";
        }
        mShowInputTv.setText(input + key);
        addInputList(INPUT_POINT, key);
    }

    /**
     * @param view
     */
    private void inputNumber(Component view) {
        if (mLastInputstatus == END || mLastInputstatus == ERROR) {
            clearInputScreen();
        }
        String key = map.get(view);
        if ("0".equals(mShowInputTv.getText().toString())) {
            mShowInputTv.setText(key);
        } else {
            mShowInputTv.setText(mShowInputTv.getText() + key);
        }
        addInputList(INPUT_NUMBER, key);
    }

    private void inputOperator(Component view) {
        if (mLastInputstatus == INPUT_OPERATOR || mLastInputstatus == ERROR) {
            return;
        }
        if (mLastInputstatus == END) {
            mLastInputstatus = INPUT_NUMBER;
        }

        String key = map.get(view);
        if ("0".equals(mShowInputTv.getText().toString())) {
            mShowInputTv.setText("0" + key);
            mInputList.set(0, new InputItem("0", InputType.INT_TYPE));
        } else {
            mShowInputTv.setText(mShowInputTv.getText() + key);
        }
        addInputList(INPUT_OPERATOR, key);
    }

    /**
     *
     */
    private void back() {
        if (mLastInputstatus == ERROR) {
            clearInputScreen();
        }
        String str = mShowInputTv.getText().toString();
        if (str.length() != 1) {
            mShowInputTv.setText(str.substring(0, str.length() - 1));
            backList();
        } else {
            mShowInputTv.setText("0");
            clearScreen(new InputItem("", InputType.INT_TYPE));
        }
    }

标签:江鸟,map,鸿蒙,Button,private,ResourceTable,计算器,put,Id
From: https://blog.51cto.com/u_16413987/8741720

相关文章

  • 鸿蒙原生应用开发——分布式数据对象
     01、什么是分布式数据对象在可信组网环境下,多个相互组网认证的设备将各自创建的对象加入同一个sessionId,使得加入的多个数据对象之间可以同步数据,也就是说,当某一数据对象属性发生变更时,其他数据对象会检测到这一变更,同时将自身属性更新。此时,该sessionId下的所有数据对象属......
  • 『江鸟中原』深入探索鸿蒙ArkTS:高效安全的跨语言开发体验
    随着鸿蒙操作系统的快速发展,跨语言开发成为了开发者们关注的焦点之一。鸿蒙ArkTS作为鸿蒙操作系统的重要组成部分,为开发者提供了一种高效、安全的跨语言开发体验。本文将深入探索鸿蒙ArkTS的语法,并通过实例代码演示其强大的功能和灵活性。ArkTS简介鸿蒙ArkTS是一种基于TypeScript......
  • 实战最新鸿蒙系统的短视频App:教你一步步掌握HarmonyOS的几个要点
    鸿蒙(HarmonyOS)是华为公司推出的全场景分布式操作系统,具备高效、安全和灵活的特性。本文将分享如何实战鸿蒙系统的智能家居控制App,并教你一步步掌握HarmonyOS的关键要点,并提供相关示例代码。一、了解HarmonyOS的核心概念在实战HarmonyOS智能家居控制App之前,首先需要了解HarmonyOS的......
  • 鸿蒙开发丨设备内UIAbility的几种交互方式
    本文分享自华为云社区《设备内UIAbility交互:无缝体验与高级技巧》,作者:柠檬味拥抱。UIAbility组件间交互(设备内)在设备内,UIAbility(用户界面能力)是系统调度的最小单元,它们负责展示用户界面和执行相关的业务逻辑。设备内的不同功能模块之间的交互是应用程序开发中的重要部分。本文......
  • 『江鸟中原』鸿蒙---聊天应用(JS)
    鸿蒙大作业,一个简单的基于JS的聊天应用环境搭建软件要求DevEcoStudio版本:DevEcoStudio3.1Release。HarmonyOSSDK版本:APIversion9。硬件要求设备类型:华为手机或运行在DevEcoStudio上的华为手机设备模拟器。HarmonyOS系统:3.1.0DeveloperRelease。环境搭建安装DevEcoStudio......
  • flutter帮我们做了什么?(鸿蒙是flutter吗)
    Flutter和鸿蒙(HarmonyOS)是两个不同的移动应用开发框架,它们有各自的特点和用途。Flutter:UI框架:Flutter是由Google开发的UI工具包,用于在移动、Web和桌面平台上构建美观、高性能的应用。跨平台:Flutter允许开发者使用相同的代码库构建iOS、Android、Web和桌面应用程序,实现......
  • 编写简易scanner计算器
    要求:具有加、减、乘、除功能能够循环接收新的数据通过用户交互实现(Scanner)思路推荐:写4个方法:加、减、乘、除利用循环+switch进行用户交互传递需要操作的两个数输出结果疑问:要求不太明确,“循环接收新数据”是指要求“能重复进行两个数的四则运算”,还是“实现连续......
  • 基于 visual studio 2022 环境下的“MFC”计算器登录使用
    一、前言1、系统环境:Window10,visualstudio2022,MYSQLClient(MariaDB5.5(X64))。2、界面:这是一个MFC界面,通过连接创建的数据库,实现计算器登录、运算以及查看历史记录的功能。二、设计过程1、流程图:2、数据库表格创建与连接(1)创建用户表“yunzhou”:(2)创建历史记录表“yu......
  • 鸿蒙应用开发笔记[2]-简单界面布局
    摘要在HarmonyOS4开发一个应用,在ArkTS的Stage开发范式下简单进行界面布局.平台信息DevEcoStudio4.0Release构建版本:4.0.0.600,builtonOctober17,2023HarmonyOS4CompileSDK“3.1.0(API9)”原理简介ArtTS的Stage开发框架[https://developer.harmonyos.com/c......
  • 马士兵鸿蒙原生开发工程师
    获取完整版--》请留言鸿蒙是华为推出的手机操作系统,之所以做这件事就是因为华为在世界通信领域具有扎实的技术功底,已经在某些领域抢了美国的风头,美国才倾全国之力去压制华为,并列出了针对华为的一系列措施,华为也确实感受到被卡了脖子。除此之外,随着物联网的呼声越来越大,各个电子产......