android studio实现简单的计算器(无bug)

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

1.效果图

android studio实现简单的计算器(无bug)_第1张图片

2布局代码



 
 
 
 
 
 
  

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 
 

4.XML文件



 
 
 
 
 








以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(android studio实现简单的计算器(无bug))