android studio实现简单的计算器(无bug)
程序员文章站
2022-04-13 21:44:28
本文实例为大家分享了android studio实现简单计算器的具体代码,供大家参考,具体内容如下1.效果图2布局代码
本文实例为大家分享了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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: 2020最新eclipse安装过程及细节