我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android计算器编写代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android计算器编写代码

其实这个安卓计算机,所有的后台思想与《C#计算器编写代码》是一模一样的。Win窗体程序移植到安卓,从C#到Java其实很简单的,因为两者的基本语法都很相像,唯一的难点是安卓的xml布局部分,不像C#窗体能够直接拖。
 还是如下图一个能够完成基本四则运算的计算器: 

先在res\values\strings.xml设置按钮相应的字体,以免布局文件警告满天飞:


 <?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="app_name">计算器</string>
  <string name="bt_1">1</string>
  <string name="bt_2">2</string>
  <string name="bt_3">3</string>
  <string name="bt_4">4</string>
  <string name="bt_5">5</string>
  <string name="bt_6">6</string>
  <string name="bt_7">7</string>
  <string name="bt_8">8</string>
  <string name="bt_9">9</string>
  <string name="bt_0">0</string>
  <string name="bt_point">.</string>
  <string name="bt_ce">CE</string>
  <string name="bt_plus">+</string>
  <string name="bt_minus">-</string>
  <string name="bt_multi">×</string>
  <string name="bt_div">÷</string>
  <string name="bt_result">=</string>
</resources>

 之后,布局部分采用了《【Android】关于百分比布局多个LinearLayout嵌套时出现的问题与解决方案》(点击打开链接)的思想,具体如下图,一个TextView、一个EditText,皆直接用match_parent占据整行的宽度,之后利用LinearLayout与TableLayout作横向比例的划分。 

因此,res\layout\activity_main.xml具体代码如下,之后的操作要操作的组件加上Id,这里加上《【Android】内存卡图片读取器,图库app》(点击打开链接)的ScrollView是防止某些手机屏幕过少,加上垂直滚动条:


 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView
      android:id="@+id/textView1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" />
    <EditText
      android:id="@+id/editText1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:enabled="false"
      android:inputType="none"
      android:textSize="18sp" />
    <LinearLayout
      android:baselineAligned="false"
      android:layout_width="match_parent"
      android:layout_height="match_parent" >
      <TableLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2" >
        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content" >
          <Button
            android:id="@+id/bt_7" 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_7" />
          <Button
            android:id="@+id/bt_8" 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_8" />
          <Button
            android:id="@+id/bt_9" 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_9" />
        </LinearLayout>
        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content" >
          <Button
            android:id="@+id/bt_4" 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_4" />
          <Button
            android:id="@+id/bt_5" 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_5" />
          <Button
            android:id="@+id/bt_6"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_6" />
        </LinearLayout>
        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content" >
          <Button
            android:id="@+id/bt_1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_1" />
          <Button
            android:id="@+id/bt_2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_2" />
          <Button
            android:id="@+id/bt_3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_3" />
        </LinearLayout>
        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content" >
          <Button
            android:id="@+id/bt_0"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_0" />
          <Button
            android:id="@+id/bt_point"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_point" />
        </LinearLayout>
      </TableLayout>
      <TableLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" >
        <Button
          android:id="@+id/bt_ce"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="@string/bt_ce" />
        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content" >
          <Button
            android:id="@+id/bt_plus"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_plus" />
          <Button
            android:id="@+id/bt_minus"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_minus" />
        </LinearLayout>
        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content" >
          <Button
            android:id="@+id/bt_multi"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_multi" />
          <Button
            android:id="@+id/bt_div"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/bt_div" />
        </LinearLayout>
        <Button
          android:id="@+id/bt_result"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="@string/bt_result" />
      </TableLayout>
    </LinearLayout>
  </LinearLayout>
</ScrollView>

 之后是MainActivity.java没什么好说的,基本与直接Win窗体的《C#计算器编写代码》,将C#改成java是一个很简单的事情。唯一注意的是,这里的按钮比较多,因此不建议像《【Android】利用Java代码布局,按钮添加点击事件》(点击打开链接)一样,使用内部匿名类实现按钮的点击事件,应该让MainActivity实现OnClickListener接口,之后在继承下来的onClick方法,根据传递过来的View v中的id,利用switch-case结构来搞,这样清晰明了。


 package com.calculator;
import java.util.*;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity implements OnClickListener {
 private List<Double> value_list = new ArrayList<Double>();// 存用户输入的数字
 private List<Integer> operator_list = new ArrayList<Integer>();// 存用户输入的运算符,定义+为0,-为1,×为2,÷为3
 // 状态记录
 private boolean add_flag = false;// +按下
 private boolean minus_flag = false;// -按下
 private boolean multi_flag = false;// ×按下
 private boolean div_flag = false;// ÷按下
 private boolean result_flag = false;// =按下
 private boolean can_operate_flag = false;// 按下=是否响应
 private TextView textView1;
 private EditText editText1;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 findViewById(R.id.bt_0).setOnClickListener(this);
 findViewById(R.id.bt_1).setOnClickListener(this);
 findViewById(R.id.bt_2).setOnClickListener(this);
 findViewById(R.id.bt_3).setOnClickListener(this);
 findViewById(R.id.bt_4).setOnClickListener(this);
 findViewById(R.id.bt_5).setOnClickListener(this);
 findViewById(R.id.bt_6).setOnClickListener(this);
 findViewById(R.id.bt_7).setOnClickListener(this);
 findViewById(R.id.bt_8).setOnClickListener(this);
 findViewById(R.id.bt_9).setOnClickListener(this);
 findViewById(R.id.bt_point).setOnClickListener(this);
 findViewById(R.id.bt_ce).setOnClickListener(this);
 findViewById(R.id.bt_plus).setOnClickListener(this);
 findViewById(R.id.bt_minus).setOnClickListener(this);
 findViewById(R.id.bt_multi).setOnClickListener(this);
 findViewById(R.id.bt_div).setOnClickListener(this);
 findViewById(R.id.bt_result).setOnClickListener(this);
 textView1 = (TextView) findViewById(R.id.textView1);
 editText1 = (EditText) findViewById(R.id.editText1);
 }
 @Override
 public void onClick(View v) {
 switch (v.getId()) {
 case R.id.bt_0:
  num_down("0");
  break;
 case R.id.bt_1:
  num_down("1");
  break;
 case R.id.bt_2:
  num_down("2");
  break;
 case R.id.bt_3:
  num_down("3");
  break;
 case R.id.bt_4:
  num_down("4");
  break;
 case R.id.bt_5:
  num_down("5");
  break;
 case R.id.bt_6:
  num_down("6");
  break;
 case R.id.bt_7:
  num_down("7");
  break;
 case R.id.bt_8:
  num_down("8");
  break;
 case R.id.bt_9:
  num_down("9");
  break;
 case R.id.bt_point:
  num_down(".");
  break;
 case R.id.bt_plus:
  if (!add_flag)// 防止用户多次输入一个符号键,符号键只允许输入一次
  {
  result_flag = false;
  value_list.add(Double.parseDouble(editText1.getText()
   .toString()));// 将当前已输入的数字放入value_list
  operator_list.add(0);
  textView1.setText(textView1.getText() + "+");
  add_flag = true;
  can_operate_flag = false;// 刚刚输入完符号,不能构成一条正常的表达式,如111+,设置为不可运行状态
  }
  break;
 case R.id.bt_minus:
  if (!minus_flag) {
  result_flag = false;
  value_list.add(Double.parseDouble(editText1.getText()
   .toString()));
  operator_list.add(1);
  textView1.setText(textView1.getText() + "-");
  minus_flag = true;
  can_operate_flag = false;
  }
  break;
 case R.id.bt_multi:
  if (!multi_flag) {
  result_flag = false;
  value_list.add(Double.parseDouble(editText1.getText()
   .toString()));
  operator_list.add(2);
  textView1.setText("(" + textView1.getText() + ")×");// 给前面的已经输入的东西加个括号。(运算符栈问题是一个很复杂的数据结构问题,这里不做,:P)
  multi_flag = true;
  can_operate_flag = false;
  }
  break;
 case R.id.bt_div:
  if (!div_flag) {
  result_flag = false;
  value_list.add(Double.parseDouble(editText1.getText()
   .toString()));
  operator_list.add(3);
  textView1.setText("(" + textView1.getText() + ")÷");
  div_flag = true;
  can_operate_flag = false;
  }
  break;
 case R.id.bt_result:
  if (value_list.size() > 0 && operator_list.size() > 0
   && can_operate_flag) {// 需要防止用户没输入数字,或者只输入了一个数,就按=。
  value_list.add(Double.parseDouble(editText1.getText()
   .toString()));
  double total = value_list.get(0);
  for (int i = 0; i < operator_list.size(); i++) {
   int _operator = operator_list.get(i);// operator是C#的运算符重载的关键字,前面加个_来区别
   switch (_operator) {
   case 0:
   total += value_list.get(i + 1);
   break;
   case 1:
   total -= value_list.get(i + 1);
   break;
   case 2:
   total *= value_list.get(i + 1);
   break;
   case 3:
   total /= value_list.get(i + 1);
   break;
   }
  }
  editText1.setText(total + "");
  textView1.setText(total + "");
  operator_list.clear();// 算完,就清空累积数字与运算数组
  value_list.clear();
  result_flag = true;// 表示=按下
  }
  break;
 case R.id.bt_ce:
  operator_list.clear();
  value_list.clear();
  add_flag = false;
  minus_flag = false;
  multi_flag = false;
  div_flag = false;
  result_flag = false;
  can_operate_flag = false;
  editText1.setText("");
  textView1.setText("");
  break;
 }
 }
 // 数字键按下,含0与.,类似000001223这类情况这里允许,因为java可以讲000001223自己转化为1223
 private void num_down(String num) {
 if (add_flag || minus_flag || multi_flag || div_flag || result_flag) {
  if (result_flag)// 按下等号,刚刚算完一个运算的状态
  {
  textView1.setText("");
  }
  editText1.setText("");// 如果用户刚刚输入完一个运算符
  add_flag = false;
  minus_flag = false;
  multi_flag = false;
  div_flag = false;
  result_flag = false;
 }
 if ((num.equals(".") && editText1.getText().toString().indexOf(".") < 0)
  || !num.equals(".")) {
  // 如果用户输入的是小数点.,则要判断当前已输入的数字中是否含有小数点.才允许输入
  editText1.setText(editText1.getText() + num);
  textView1.setText(textView1.getText() + num);
  can_operate_flag = true;
 }
 }
}
您可能感兴趣的文章:从零开始学android实现计算器功能示例分享(计算器源码)android计算器简单实现代码android计时器,时间计算器的实现方法Android开发实现的简单计算器功能【附完整demo源码下载】Android中使用GridLayout网格布局来制作简单的计算器AppAndroid Studio实现简易计算器android计算器代码示例分享简单实现Android计算器功能Android实战教程第一篇之最简单的计算器android实现简单计算器功能


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android计算器编写代码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android计算器编写代码

其实这个安卓计算机,所有的后台思想与《C#计算器编写代码》是一模一样的。Win窗体程序移植到安卓,从C#到Java其实很简单的,因为两者的基本语法都很相像,唯一的难点是安卓的xml布局部分,不像C#窗体能够直接拖。 还是如下图一个能够完成
2022-06-06

Python只用40行代码编写的计算器实例

本文实例讲述了Python只用40行代码编写的计算器。分享给大家供大家参考,具体如下: 效果图:代码:from tkinter import * reset=True def buttonCallBack(event):global lab
2022-06-04

android计算器简单实现代码

本文实例为大家分享了android计算器的具体实现代码,供大家参考,具体内容如下java代码:package com.itheima74.simplecalculator4; import android.os.Bundle; import
2022-06-06

Android 编程下的计时器代码

同样,为了防止用户恶意的频繁发送激活码,应用中需要对用户发送激活码的时间间隔进行限制,这时就需要用到倒计时器了,大概流程是这样的:页面初始化的时候,按钮为可点击状态,用户在点击“发送激活码”后按钮变为不可点击状态,同时按钮上的文字变为倒计时
2022-06-06

android计算器代码示例分享

代码如下:2022-06-06

java实现计算器的代码怎么写

以下是一个简单的Java代码实现计算器的示例:```javaimport java.util.Scanner;public class Calculator {public static void main(String[] args) {
2023-08-11

js计算时间差代码怎么写

这篇文章主要讲解了“js计算时间差代码怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js计算时间差代码怎么写”吧!var begintime_ms = Date.parse(new D
2023-07-04
2023-09-02

iOS实现简易计算器的代码怎么写

本篇内容主要讲解“iOS实现简易计算器的代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“iOS实现简易计算器的代码怎么写”吧!初步接触视图,制作了一个简易的计算器,基本上简单的计算是没有
2023-06-29

C语言实现计算器的代码怎么写

这篇文章主要介绍了C语言实现计算器的代码怎么写的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言实现计算器的代码怎么写文章都会有所收获,下面我们一起来看看吧。C语言计算器两种方法//一般做法#include<
2023-06-29

python编写小程序(计算器)

#coding=gbkdef yunsuan(userA,userB,operate): '运算函数' try: A = int(userA) B = int(userB) operate_lis
2023-01-31

Python编写一个简单计算器

一个计算器最主要的功能是加减乘除,那么用 Python 可以怎样实现呢#!/usr/bin/env python# -*- coding:utf-8 -*-# @Time : 2018/1/22 22:29# @Author : z
2023-01-31

【Android平板编程】远程Ubuntu服务器code-server编程写代码

文章目录 前言1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址5.结语 前言   本次教程将在 Ubuntu 服务器环境下安装 co
2023-08-19

KDJ计算代码_Python代码

import numpy as npdef KDJ(date,N=9,M1=3,M2=3): datelen=len(date) array=np.array(date) kdjarr=[] for i in ran
2023-01-31

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录