本文实例为大家分享了android studio实现简单计算器的具体代码,供大家参考,具体内容如下
1.效果图

2布局代码
<?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" android:background="@drawable/jsj1"> <textview android:layout_width="match_parent" android:layout_height="wrap_content" android:text="计算器" android:textsize="20dp" android:gravity="center" android:textcolor="#ee4000"/> <textview android:layout_width="match_parent" android:layout_height="wrap_content" android:text="输入数字"/> <edittext android:id="@+id/et001" android:layout_width="match_parent" android:layout_height="wrap_content"/> <textview android:layout_width="match_parent" android:layout_height="wrap_content" android:text="运算结果"/> <edittext android:id="@+id/et002" android:layout_width="match_parent" android:layout_height="wrap_content"/> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <button android:layout_marginleft="5dp" android:id="@+id/btn001" android:layout_width="88dp" android:layout_height="100dp" android:text="c" android:textsize="20dp" android:padding="5dp" android:background="@drawable/qqqqqqqqqq"/> <button android:id="@+id/btn002" android:layout_width="88dp" android:layout_height="100dp" android:text="÷" android:textsize="20dp" android:padding="5dp" android:background="@drawable/qqqqqqqqqq"/> <button android:id="@+id/btn003" android:layout_width="88dp" android:layout_height="100dp" android:text="×" android:textsize="20dp" android:padding="5dp" android:background="@drawable/qqqqqqqqqq"/> <button android:id="@+id/btn004" android:layout_width="88dp" android:layout_height="100dp" android:text="cx" android:textsize="20dp" android:padding="5dp" android:background="@drawable/qqqqqqqqqq"/> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <button android:layout_marginleft="5dp" android:id="@+id/btn005" android:layout_width="88dp" android:layout_height="100dp" android:text="7" android:textsize="20dp" android:padding="5dp" android:background="@drawable/sssssssssssssss"/> <button android:id="@+id/btn006" android:layout_width="88dp" android:layout_height="100dp" android:text="8" android:textsize="20dp" android:padding="5dp" android:background="@drawable/sssssssssssssss"/> <button android:id="@+id/btn007" android:layout_width="88dp" android:layout_height="100dp" android:text="9" android:textsize="20dp" android:padding="5dp" android:background="@drawable/sssssssssssssss"/> <button android:id="@+id/btn008" android:layout_width="88dp" android:layout_height="100dp" android:text="-" android:textsize="20dp" android:padding="5dp" android:background="@drawable/qqqqqqqqqq"/> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <button android:layout_marginleft="5dp" android:id="@+id/btn009" android:layout_width="88dp" android:layout_height="100dp" android:text="4" android:textsize="20dp" android:padding="5dp" android:background="@drawable/sssssssssssssss"/> <button android:id="@+id/btn0010" android:layout_width="88dp" android:layout_height="100dp" android:text="5" android:textsize="20dp" android:padding="5dp" android:background="@drawable/sssssssssssssss"/> <button android:id="@+id/btn0011" android:layout_width="88dp" android:layout_height="100dp" android:text="6" android:textsize="20dp" android:padding="5dp" android:background="@drawable/sssssssssssssss"/> <button android:id="@+id/btn0012" android:layout_width="88dp" android:layout_height="100dp" android:text="+" android:textsize="20dp" android:padding="5dp" android:background="@drawable/qqqqqqqqqq"/> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <button android:layout_marginleft="5dp" android:id="@+id/btn0013" android:layout_width="88dp" android:layout_height="100dp" android:text="1" android:textsize="20dp" android:padding="5dp" android:background="@drawable/sssssssssssssss"/> <button android:id="@+id/btn0014" android:layout_width="88dp" android:layout_height="100dp" android:text="2" android:textsize="20dp" android:padding="5dp" android:background="@drawable/sssssssssssssss"/> <button android:id="@+id/btn0015" android:layout_width="88dp" android:layout_height="100dp" android:text="3" android:textsize="20dp" android:padding="5dp" android:background="@drawable/sssssssssssssss"/> <button android:id="@+id/btn0019" android:layout_width="88dp" android:layout_height="100dp" android:text="." android:textsize="20dp" android:padding="5dp" android:background="@drawable/qqqqqqqqqq"/> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <button android:layout_marginleft="5dp" android:id="@+id/btn0018" android:layout_width="88dp" android:layout_height="100dp" android:text="0" android:textsize="20dp" android:padding="5dp" android:background="@drawable/sssssssssssssss"/> <button android:id="@+id/btn0016" android:layout_width="265dp" android:layout_height="100dp" android:text="=" android:textsize="20dp" android:padding="5dp" android:background="#6495ed"/> </linearlayout> </linearlayout>
3.逻辑代码
package com.example.myzhuoye;
import android.os.bundle;
import android.view.view;
import android.widget.button;
import android.widget.edittext;
import androidx.annotation.nullable;
import androidx.appcompat.app.appcompatactivity;
public class jisuanji extends appcompatactivity implements view.onclicklistener {
//结果
private edittext et001,et002;
//数字0-9
private button btn0018, btn0013,btn0014,btn0015,btn009,btn0010,btn0011,btn005,btn006,btn007;
//运算符,+,-,×,÷,.,=;清除,返回
private button btn0012,btn008,btn003,btn002,btn0019,btn0016,btn001,btn004;
private string text = "";//保存输入的数字和符号
private double result = 0.0;//输出结果
@override
protected void oncreate(@nullable bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.layout4);
//结果
et001=(edittext)findviewbyid(r.id.et001);
et002=(edittext)findviewbyid(r.id.et002);
//数字0-9
btn0013=(button)findviewbyid(r.id.btn0013);
btn0014=(button)findviewbyid(r.id.btn0014);
btn0015=(button)findviewbyid(r.id.btn0015);
btn009=(button)findviewbyid(r.id.btn009);
btn0010=(button)findviewbyid(r.id.btn0010);
btn0011=(button)findviewbyid(r.id.btn0011);
btn005=(button)findviewbyid(r.id.btn005);
btn006=(button)findviewbyid(r.id.btn006);
btn007=(button)findviewbyid(r.id.btn007);
btn0018=(button)findviewbyid(r.id.btn0018);
//运算符
btn004=(button)findviewbyid(r.id.btn004);
btn0012=(button)findviewbyid(r.id.btn0012);
btn008=(button)findviewbyid(r.id.btn008);
btn003=(button)findviewbyid(r.id.btn003);
btn002=(button)findviewbyid(r.id.btn002);
btn0019=(button)findviewbyid(r.id.btn0019);
btn0016=(button)findviewbyid(r.id.btn0016);
btn001=(button)findviewbyid(r.id.btn001);
//添加点击事件
btn0013.setonclicklistener((view.onclicklistener) this);
btn0014.setonclicklistener((view.onclicklistener) this);
btn0015.setonclicklistener((view.onclicklistener) this);
btn009.setonclicklistener((view.onclicklistener) this);
btn0010.setonclicklistener((view.onclicklistener) this);
btn0011.setonclicklistener((view.onclicklistener) this);
btn005.setonclicklistener((view.onclicklistener) this);
btn006.setonclicklistener((view.onclicklistener) this);
btn007.setonclicklistener((view.onclicklistener) this);
btn0018.setonclicklistener((view.onclicklistener) this);
btn0012.setonclicklistener((view.onclicklistener) this);
btn008.setonclicklistener((view.onclicklistener) this);
btn003.setonclicklistener((view.onclicklistener) this);
btn002.setonclicklistener((view.onclicklistener) this);
btn0019.setonclicklistener((view.onclicklistener) this);
btn0016.setonclicklistener((view.onclicklistener) this);
btn001.setonclicklistener((view.onclicklistener) this);
btn004.setonclicklistener((view.onclicklistener) this);
}
@override
public void onclick(view v) {
string string=et001.gettext().tostring();
switch (v.getid()){
case r.id.btn0018://0
num(0);
break;
case r.id.btn0013://1
num(1);
break;
case r.id.btn0014://2
num(2);
break;
case r.id.btn0015://3
num(3);
break;
case r.id.btn009://4
num(4);
break;
case r.id.btn0010://5
num(5);
break;
case r.id.btn0011://6
num(6);
break;
case r.id.btn005://7
num(7);
break;
case r.id.btn006://8
num(8);
break;
case r.id.btn007://9
num(9);
break;
case r.id.btn0019://.
dot();
break;
case r.id.btn0012://+
add();
break;
case r.id.btn008://-
sub();
break;
case r.id.btn003://"*"
multiply();
break;
case r.id.btn002://除
divide();
break;
case r.id.btn001://清除
clear();
break;
case r.id.btn004://返回
back();
break;
//计算结果
case r.id.btn0016://结果
result();
break;
default:
break;
}
et001.settext(text);
et002.settext(string.valueof(result));
}
private void num(int i) {
text = text + string.valueof(i);
}
private void dot() {
int a=text.length();
string s01="+";
string s02="-";
string s03="×";
string s04="÷";
string s05=".";
if (a!=0) {
string s=text.substring(a-1,a);
string s0=text.substring(0,a-1);
if (s01.equals(s) || s02.equals(s) || s03.equals(s) || s04.equals(s) || s05.equals(s)) {
text = s0+".";
}else {
text += ".";
}
} else {
text = "";
result =0.0;
et001.settext("");
et002.settext("");
}
}
private void clear() {
text = "";
result =0.0;
et001.settext("");
et002.settext("");
}
private void back() {
if (text.length()!=0){
string str = text.substring(0, text.length()-1);
text = str;
}
;
}
private void add() {
int a=text.length();
string s01="+";
string s02="-";
string s03="×";
string s04="÷";
string s05=".";
if (a!=0) {
string s=text.substring(a-1,a);
string s0=text.substring(0,a-1);
if (s01.equals(s) || s02.equals(s) || s03.equals(s) || s04.equals(s) || s05.equals(s)) {
text = s0+"+";
}else {
text += "+";
}
} else {
text = "";
result =0.0;
et001.settext("");
et002.settext("");
}
}
private void sub() {
int a=text.length();
string s01="+";
string s02="-";
string s03="×";
string s04="÷";
string s05=".";
if (a!=0) {
string s=text.substring(a-1,a);
string s0=text.substring(0,a-1);
if (s01.equals(s) || s02.equals(s) || s03.equals(s) || s04.equals(s) || s05.equals(s)) {
text = s0+"-";
}else {
text += "-";
}
} else {
text = "";
result =0.0;
et001.settext("");
et002.settext("");
}
}
private void multiply() {
int a=text.length();
string s01="+";
string s02="-";
string s03="×";
string s04="÷";
string s05=".";
if (a!=0) {
string s=text.substring(a-1,a);
string s0=text.substring(0,a-1);
if (s01.equals(s) || s02.equals(s) || s03.equals(s) || s04.equals(s) || s05.equals(s)) {
text = s0+"×";
}else {
text += "×";
}
} else {
text = "";
result =0.0;
et001.settext("");
et002.settext("");
}
}
private void divide() {
int a=text.length();
string s01="+";
string s02="-";
string s03="×";
string s04="÷";
string s05=".";
if (a!=0) {
string s=text.substring(a-1,a);
string s0=text.substring(0,a-1);
if (s01.equals(s) || s02.equals(s) || s03.equals(s) || s04.equals(s) || s05.equals(s)) {
text = s0+"÷";
}else {
text += "÷";
}
} else {
text = "";
result =0.0;
et001.settext("");
et002.settext("");
}
}
//计算输出结果
private void result() {
result = testoperation(text);
}
public double testoperation(string s){
//分割字符然后放进数组
string s1 =s.replace("+","-");
string[] str = s1.split("-");
double total1=0;
//先遍历数组,把里面的乘除结果算出来
for(string str1:str){
if(str1.contains("×")||str1.contains("÷")){
double total = 0;
for(int i =0;i<str1.length();){
int count =1;
a:for(int j =i+1;j<str1.length();j++){
char c =str1.charat(j);
if(c=='×'||c=='÷'){
break a;
}else{
count++;
}
}
//将数字截取出来
string s2 =str1.substring(i,i+count);
double d = double.parsedouble(s2);
if(i==0){
total = d;
}else{
char c1 = str1.charat(i-1);
if(c1=='×'){
total*=d;
}else if(c1=='÷'){
//如果除数为0,直接返回null;
if(d == 0)
return null;
total/=d;
}
}
i+=count+1;
}
s= s.replace(str1, total+"");
}
}
//进行加减运算
for(int i =0;i<s.length();i++){
int count =1;
a:for(int j=i+1;j<s.length();j++){
char c = s.charat(j);
if(c=='+'||c=='-'){
break a;
}else{
count++;
}
}
string s3= s.substring(i,i+count);
double d2 = double.parsedouble(s3);
if(i==0){
total1 = d2;
}else{
char c = s.charat(i-1);
if(c=='+'){
total1+=d2;
}else if(c=='-'){
total1-=d2;
}
}
i+=count;
}
return total1;
}
}
4.xml文件
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startcolor="#c0000000" android:endcolor="#c0000000" android:angle="90" /><!--背景颜色渐变 angle为渐变角度--> <solid android:color=" #8deeee" /><!-- 背景填充颜色 --> <stroke android:width="0.5dp" android:color="#ff000000" /><!-- 描边,边框宽度、颜色 --> <corners android:radius="0dp" /><!-- 边角圆弧的半径 --> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /><!-- 四周留出来的空白 --> </shape>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startcolor="#c0000000" android:endcolor="#c0000000" android:angle="90" /><!--背景颜色渐变 angle为渐变角度--> <solid android:color="#00ffff" /><!-- 背景填充颜色 --> <stroke android:width="0.5dp" android:color="#ff000000" /><!-- 描边,边框宽度、颜色 --> <corners android:radius="0dp" /><!-- 边角圆弧的半径 --> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /><!-- 四周留出来的空白 --> </shape>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
嗫?暁雲?