android计算器

article/2025/11/2 10:24:20

1、效果预览


2、项目布局


3、main.xml文件内容

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"android:background="@drawable/anyouhui12210750213ebc1b8a1"><View android:layout_height="8sp"android:layout_width="fill_parent"/><EditText android:id="@+id/myEdit"android:layout_width="fill_parent"android:layout_height="70sp"android:inputType="text"android:enabled="false"android:text="0"android:textSize="25sp"android:textColor="#000000"/><View android:layout_height="10sp"android:layout_width="fill_parent"/><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><ImageView android:layout_width="65sp"android:layout_height="57sp"android:src="@drawable/at"/><Button android:id="@+id/back"android:layout_width="125sp"android:layout_height="wrap_content"android:text="Back "android:textSize="30sp"/><Button android:id="@+id/tuibu"android:layout_width="125sp"android:layout_height="wrap_content"android:text="←"android:textSize="30sp"/></LinearLayout><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><Button android:id="@+id/a7"android:layout_width="63sp"android:layout_height="wrap_content"android:text="7"android:textSize="30sp"/><Button android:id="@+id/a8"android:layout_width="63sp"android:layout_height="wrap_content"android:text="8"android:textSize="30sp"/><Button android:id="@+id/a9"android:layout_width="63sp"android:layout_height="wrap_content"android:text="9"android:textSize="30sp"/><Button android:id="@+id/zuokuohao"android:layout_width="63sp"android:layout_height="wrap_content"android:text="("android:textSize="30sp"/><Button android:id="@+id/youkuohao"android:layout_width="63sp"android:layout_height="wrap_content"android:text=")"android:textSize="30sp"/></LinearLayout><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><Button android:id="@+id/a4"android:layout_width="63sp"android:layout_height="wrap_content"android:text="4"android:textSize="30sp"/><Button android:id="@+id/a5"android:layout_width="63sp"android:layout_height="wrap_content"android:text="5"android:textSize="30sp"/><Button android:id="@+id/a6"android:layout_width="63sp"android:layout_height="wrap_content"android:text="6"android:textSize="30sp"/><Button android:id="@+id/jia"android:layout_width="63sp"android:layout_height="wrap_content"android:text="+"android:textSize="30sp"/><Button android:id="@+id/cheng"android:layout_width="63sp"android:layout_height="wrap_content"android:text="×"android:textSize="30sp"/></LinearLayout><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><Button android:id="@+id/a1"android:layout_width="63sp"android:layout_height="wrap_content"android:text="1"android:textSize="30sp"/><Button android:id="@+id/a2"android:layout_width="63sp"android:layout_height="wrap_content"android:text="2"android:textSize="30sp"/><Button android:id="@+id/a3"android:layout_width="63sp"android:layout_height="wrap_content"android:text="3"android:textSize="30sp"/><Button android:id="@+id/jian"android:layout_width="63sp"android:layout_height="wrap_content"android:text="-"android:textSize="30sp"/><Button android:id="@+id/chu"android:layout_width="63sp"android:layout_height="wrap_content"android:text="÷"android:textSize="30sp"/></LinearLayout><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><Button android:id="@+id/ax"android:layout_width="63sp"android:layout_height="wrap_content"android:text="√"android:textSize="30sp"/><Button android:id="@+id/a0"android:layout_width="63sp"android:layout_height="wrap_content"android:text="0"android:textSize="30sp"/><Button android:id="@+id/dian"android:layout_width="63sp"android:layout_height="wrap_content"android:text="·"android:textSize="30sp"/><Button android:id="@+id/deng"android:layout_width="125sp"android:layout_height="wrap_content"android:text="="android:textSize="30sp"/></LinearLayout><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><ImageView android:layout_width="fill_parent"android:layout_height="wrap_content"android:src="@drawable/acmb"/></LinearLayout></LinearLayout>

4、MainActivity.java文件

package com.example.jsq;import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Stack;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;public class MainActivity extends Activity {private EditText edit=null;private Button but1=null;private Button but2=null;private Button but3=null;private Button but4=null;private Button but5=null;private Button but6=null;private Button but7=null;private Button but8=null;private Button but9=null;private Button but0=null;private Button butJia=null;private Button butJian=null;private Button butCheng=null;private Button butChu=null;private Button butDian=null;private Button butZuo=null;private Button butYou=null;private Button butTui=null;private Button butBack=null;private Button butx=null;private Button butDeng=null;static boolean ok=false;static String jieguo="";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.edit=(EditText)super.findViewById(R.id.myEdit);this.but0=(Button)super.findViewById(R.id.a0);this.but1=(Button)super.findViewById(R.id.a1);this.but2=(Button)super.findViewById(R.id.a2);this.but3=(Button)super.findViewById(R.id.a3);this.but4=(Button)super.findViewById(R.id.a4);this.but5=(Button)super.findViewById(R.id.a5);this.but6=(Button)super.findViewById(R.id.a6);this.but7=(Button)super.findViewById(R.id.a7);this.but8=(Button)super.findViewById(R.id.a8);this.but9=(Button)super.findViewById(R.id.a9);this.butJia=(Button)super.findViewById(R.id.jia);this.butJian=(Button)super.findViewById(R.id.jian);this.butCheng=(Button)super.findViewById(R.id.cheng);this.butChu=(Button)super.findViewById(R.id.chu);this.butZuo=(Button)super.findViewById(R.id.zuokuohao);this.butYou=(Button)super.findViewById(R.id.youkuohao);this.butTui=(Button)super.findViewById(R.id.tuibu);this.butBack=(Button)super.findViewById(R.id.back);this.butx=(Button)super.findViewById(R.id.ax);this.butDeng=(Button)super.findViewById(R.id.deng);this.butDian=(Button)super.findViewById(R.id.dian);this.but0.setOnClickListener(new Ja0());this.but1.setOnClickListener(new Ja1());this.but2.setOnClickListener(new Ja2());this.but3.setOnClickListener(new Ja3());this.but4.setOnClickListener(new Ja4());this.but5.setOnClickListener(new Ja5());this.but6.setOnClickListener(new Ja6());this.but7.setOnClickListener(new Ja7());this.but8.setOnClickListener(new Ja8());this.but9.setOnClickListener(new Ja9());this.butZuo.setOnClickListener(new JaZuo());this.butYou.setOnClickListener(new JaYou());this.butDian.setOnClickListener(new JaDian());this.butJia.setOnClickListener(new Jia());this.butJian.setOnClickListener(new Jian());this.butCheng.setOnClickListener(new cheng());this.butChu.setOnClickListener(new chu());this.butDeng.setOnClickListener(new deng());this.butx.setOnClickListener(new jax());this.butTui.setOnClickListener(new tui());this.butBack.setOnClickListener(new back());}private class jax implements OnClickListener{@Overridepublic void onClick(View arg0) {if(MainActivity.this.edit.getText().toString().equals(""))return;if(ok){MainActivity.this.edit.setText(jieguo);ok=false;}String s=MainActivity.this.edit.getText().toString()+"=";//text1.setText("√("+text1.getText()+")=");s=s.replace("×", "*");s=s.replace("÷", "/");qiuzhi(s);//	MainActivity.deng.this.qiuzhi(s);jieguo=Math.sqrt(Double.parseDouble(jieguo))+"";jieguo=huajian(jieguo);MainActivity.this.edit.setText("√("+MainActivity.this.edit.getText()+")="+jieguo);ok=true;}}private class back implements OnClickListener{@Overridepublic void onClick(View arg0) {MainActivity.this.edit.setText("0");ok=false;}}private class tui implements OnClickListener{@Overridepublic void onClick(View arg0) {String str=MainActivity.this.edit.getText().toString();MainActivity.this.edit.setText(str.substring(0, str.length()-1<0?0: str.length()-1));}}private class Ja0 implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("0");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"0");}}}private class Ja1 implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("1");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"1");}}}private class Ja2 implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("2");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"2");}}}private class Ja3 implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("3");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"3");}}}private class Ja4 implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("4");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"4");}}}private class Ja5 implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("5");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"5");}}}private class Ja6 implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("6");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"6");}}}private class Ja7 implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("7");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"7");}}}private class Ja8 implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("8");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"8");}}}private class Ja9 implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("9");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"9");}}}private class JaDian implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+".");}}private class JaYou implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+")");}}private class JaZuo implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText("0");ok=false;}if(MainActivity.this.edit.getText().toString().equals("0")){MainActivity.this.edit.setText("(");}else{MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"(");}}}private class Jia implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText(jieguo);ok=false;}MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"+");}}private class Jian implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText(jieguo);ok=false;}MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"-");}}private class cheng implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText(jieguo);ok=false;}MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"x");}}private class chu implements OnClickListener{@Overridepublic void onClick(View arg0) {if(ok){MainActivity.this.edit.setText(jieguo);ok=false;}MainActivity.this.edit.setText(MainActivity.this.edit.getText().toString()+"÷");}}private class deng implements OnClickListener{@Overridepublic void onClick(View arg0) {try {String s=MainActivity.this.edit.getText().toString()+"=";String s1=s;MainActivity.this.edit.setText(s);s=s.replace("x", "*");s=s.replace("÷", "/");qiuzhi(s);MainActivity.this.edit.setText(s1+jieguo);ok=true;} catch (Exception e1) {MainActivity.this.edit.setText("式子不合法");ok=true;e1.printStackTrace();}}}public void qiuzhi(String s) {HashMap<Character,Integer> map=new HashMap<Character,Integer>();//存运算符的优先级Stack<BigDecimal> sk1=new Stack<BigDecimal>();//存数字Stack<Character> sk2=new Stack<Character>();//存运算符map=SUM(map);boolean okk=true;int x=0;for(int i=0;i<s.length();i++){char a=s.charAt(i);if((a>='0'&&a<='9'||a=='.')&&okk){x=i;okk=false;}else if(!(a>='0'&&a<='9'||a=='.')){//是运算符//System.out.println(s.substring(x, i));if(i>0&&s.charAt(i-1)<='9'&&s.charAt(i-1)>='0')//防止两个运算符一块,1*(..)sk1.push(new BigDecimal(s.substring(x, i)));//将数字部分变成浮点型okk=true;if(sk2.isEmpty()){//运算符栈是空,运算符直接进栈sk2.push(a);}else{//运算符栈不为空if(map.get(sk2.peek())<map.get(a)){//如果来的运算符优先级较高,直接进栈sk2.push(a);continue;}while(!sk2.isEmpty()&&(map.get(sk2.peek())>=map.get(a)&&sk2.peek()!='(')){//运算符栈不为空,且来的运算符级别较低,switch(sk2.pop()){//最后进的运算符出栈,执行运算case '+':{BigDecimal c=sk1.pop();//数字栈后进的两个数字出栈开始运算,然后再进栈BigDecimal d=sk1.pop();c=c.add(d);sk1.push(c);break;}case '-':{BigDecimal c=sk1.pop();BigDecimal d=sk1.pop();c=d.subtract(c);sk1.push(c);break;}case '*':{BigDecimal c=sk1.pop();BigDecimal d=sk1.pop();c=c.multiply(d);sk1.push(c);break;}case '/':{BigDecimal c=sk1.pop();BigDecimal d=sk1.pop();c=d.divide(c, 100, BigDecimal.ROUND_HALF_UP);sk1.push(c);break;}}}if(!sk2.isEmpty()&&sk2.peek()=='('&&a==')'){//消除运算之后的无意义括号sk2.pop();}elsesk2.push(a);//其他来的运算符继续进栈}}}jieguo=sk1.pop().toPlainString();jieguo=huajian(jieguo);}private String huajian(String j) {if(j.indexOf(".")!=-1){for(int i=j.length()-1;i>=0;i--){if(j.endsWith("0")){j=j.substring(0,j.length()-1);}elsebreak;}}if(j.endsWith(".")){j=j.substring(0,j.length()-1);}return j;}private HashMap<Character, Integer> SUM(HashMap<Character, Integer> map) {map.put('=', 1);map.put(')', 2);map.put('+', 3);map.put('-', 3);map.put('*', 4);map.put('/', 4);map.put('(', 5);return map;}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

项目下载---请到资源页面下载



http://chatgpt.dhexx.cn/article/FKOkVjeE.shtml

相关文章

Android计算器简单实现及代码分析

一、UI布局及代码 页面效果 布局代码 <?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"…

Android计算器——入门

Android计算器—入门 作者&#xff1a;黑衣侠客 一.前言 这是我写的第一个App&#xff0c;利用的是《安卓第一行代码》第三章&#xff0c;UI控件的一些知识&#xff0c;然后整体结构综合了一些CSDN博客和简书上的一些著作&#xff0c;同样&#xff0c;在写Android计算器&…

基础复习——项目练习——计算器

布局&#xff1a; <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:background"#eeeeee"android:orientation"vert…

安卓-AndroidStudio-计算器

安卓--Android Studio--简易计算器 结果截图关键代码讲解完整代码 本人是一名在校学生&#xff0c;由于上个学期的课程内容包括移动开发&#xff0c;其中的实验也算是大部分是自己完成的&#xff0c;所以算是写博客记录一下吧。 第一次写&#xff0c;有啥问题及时交流哈&#x…

Django数据库操作

目录 一、Django/ORM框架介绍及配置 1.1、ORM框架介绍 1.2、Django数据库配置 二、定义模型类数 2.1、定义模型类 2.2、迁移 2.3、插入数据 三、单表据库操作(增、删、改、查) 3.1、增 3.2、删 3.3、改 3.4查&#xff08;重点&#xff09; 四、两表联查 4.1、一对…

Qt入门------数据库操作

文章目录 一、数据库1.数据库驱动2.查询驱动3.连接数据库4.执行sql语句5.插入数据6.事务 二 &#xff0c;sql模型类1.QSqlQueryModel模型2.QSqlTableModel模型3.QSqlRelationalTableModel模型 一、数据库 Qt中的Qt SQL模块提供了对数据库的支持&#xff0c;模块中类可分为三层…

Java的数据库操作

Java的数据库操作&#xff0c;上学期末的课设是用到的&#xff0c;然而老师把JDBC连接mysql数据库的代码和配置文件已经给好了&#xff0c;那时对它可以说是只有一点点印象。 今天跟着书走一边敲一边&#xff0c;总算是有所进步。 数据库表的创建和初始数据的操作&#xff0c…

一文详解python中的数据库操作

python中的数据库操作 一、数据库编程接口1. 连接对象 二、使用内置的SQLite1.创建数据库文件2.操作SQLite 三、MySql数据库的使用3.1 安装MySql3.2 设置环境变量3.3 启动MySql3.4 使用navicat for mysql 管理软件3.5 安装PyMysql模块3.6 连接数据库 四、创建数据表4.1 创建boo…

数据库操作练习题

如何查看员工表中的所有字段&#xff1f; 如何查看员工表中的姓名和性别&#xff1f; 如何知道每个员工一年的总收入&#xff1f; 怎么查看女员工的信息&#xff1f; 如何查看月薪范围位于 8000 到 12000 之间的员工&#xff1f; 查询员工中叫做“张三”、“李四” 或“张飞”的…

MySQL(一)数据库操作

1.关系型数据库与非关系型数据库区别与联系 1.关系型数据库 ( SQL ) MySQL , Oracle , SQL Server , SQLite , DB2 , … 关系型数据库通过外键关联来建立表与表之间的关系 2.非关系型数据库 ( NOSQL ) Redis , MongoDB , … 非关系型数据库通常指数据以对象的形式存储在数据…

使用ORACLE 进行数据库操作

上一期讲了 如何创建表&#xff0c;例如我们创建了一个 名为 t_customer 的表&#xff0c;格式为下&#xff1a; create table t_customer(cust_id int primary key,cust_name varchar(20),cust_gender char(3),cust_age int,cust_birthday date,cust_height number(3,2),cust…

C#数据库操作

功能需求 1&#xff0c;利用随机数模拟产生每次考试成绩 2&#xff0c;将每次考试成绩存入到数据库 3&#xff0c;将每次考试成绩划分优、良、中、差、不及格五类&#xff0c;并作为查询条件&#xff0c;查询符合每种水平的成绩 技术知识点 1.random类的使用 2.数据库的链…

云数据库操作

1 云数据库创建 每一个list就相当于一个表&#xff0c;每个记录就是一条内容 云数据库存储形式是JSON2 读取云数据库值 数据库初始化 const db wx.cloud.database() 连接数据库 db.collection(需要连接的数据列表名)可以通过.doc(‘具体id号’)获取具体的信息内容获取年、月…

Android数据库操作

Android内置了一个名为SQLite的关系型数据库&#xff0c;这是一款轻量型的数据库&#xff0c;操作十分简便。SQLite与别的数据库不同的是&#xff0c;它没有数据类型。可以保存任何类型的数据到你所想要保存的任何表的任何列中。但它又支持常见的类型比如: NULL, VARCHAR, TEXT…

数据库基本操作

一、数据库基本操作 1.数据库的基本操作 -- 1.数据库的基本操作 使用test数据库 USE test; -- 查看当前test数据库中所有表 MySQL命令 SHOW TABLES; -- 查表的基本信息 SHOW CREATE TABLE student; -- -- 查看表的字段信息 desc student; 2.数据表的基本操作 -- 2.数据表的…

数据库基础操作

一、数据库的操作 数据库与客户端是通过网络进行交互的。 1、显示当前数据库 sql语句必须以 ; 结尾 show databases; 2、创建数据库 create database 数据库名; ->如果数据库sql敲错了&#xff0c;会有提示。 ->如果sql敲错了&#xff0c;可以按 ctrlc来终止sql。…

数据库的基本操作

目录 一、数据库的基本操作 1、数据库的登录及退出 2、查看所有数据库 3、显示数据库版本 4、显示时间 5、创建数据库 6、查看创建数据库的语句 7、查看当前使用的数据库 8、查看当前用户 9、使用某个数据库 10、删除数据库 二、数据表的基本操作 1、查看当前数据…

如何在IDEA上创建一个JSP项目【亲测有效】

idea上创建一个jsp项目 1、创建一个Java项目 2、创建成功后右击项目名称&#xff0c;点击Add Framework support 3、选择web application 选择适合版本&#xff0c;创建 4、创建成功后项目中会出现web文件夹 5、点击属性&#xff0c;进行配置 6、在project中配置jdk(你自己电脑…

Eclipse中安装配置Tomcat和创建JSP项目

这里写自定义目录标题 安装配置Tomcat创建JSP项目 安装配置Tomcat 下载并解压Tomcat到指定目录Eclipse菜单栏中找到Window–>Preperences->Server->Runtime Environments->Add 3.选择Tomcat文件夹 4.在Eclipse中找到Servers视图窗口&#xff0c;创建Tomcat服务…

springBoot+JSP搭建项目

1.springBoot对JSP的支持 springBoot虽然支持JSP&#xff0c;但是官方不建议使用&#xff0c;下面是官方文档解释 When running a Spring Boot application that uses an embedded servlet container (and is packaged as an executable archive), there are some limitations…