本文实例为大家分享了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>
关于计算器的精彩文章请查看《计算器专题》 ,更多精彩等你来发现!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。