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

本文实例为大家分享了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>

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

(0)

相关推荐

  • Android Studio实现简易计算器

    如果是制作简易计算器的话是基本没有难点的,供大家参考,具体内容如下 步骤是先写好界面布局,将按钮的布局.字号颜色啥的做好,再就是设置监听器. 使用了NoTitleBar的主题 代码如下: activity_main里关于界面的代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a

  • Android Studio实现简易计算器(表格布局TableLayout)

    这是一个运用网格布局来做的简易计算器,可能没有那么美观,大家可以继续完善 首先先看看成果吧 首先先建一个新的Project Calculator 然后先编写颜色背景文件 创建一个gray.xml,哪里创建呢?如图 在drawable下右击,选择new–Drawable resource file 第一个是文件名字,第二个属性可以自己选择,我们这里前两个文件选择shape,第三个文件选selector,附上颜色背景代码 gray.xml <?xml version="1.0" en

  • Android studio设计简易计算器

    本文实例为大家分享了Android studio设计简易计算器的具体代码,供大家参考,具体内容如下 效果显示: 第一步,简单的界面布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.and

  • Android Studio实现简单计算器APP

    一.简介:用Android Studio 实现一个简单的计算器APP,并在蓝叠模拟器中运行. 该计算器只能实现两位数字的四则运算. 二.代码 activity_main.xml   ---界面设计 <?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t

  • android studio实现计算器

    本文实例为大家分享了android studio实现计算器的具体代码,供大家参考,具体内容如下 效果图: 资源文件: color.xml <?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark&

  • Android studio实现简单计算器

    本文实例为大家分享了Android studio实现简单计算器的具体代码,供大家参考,具体内容如下 需求分析 在Android studio中设计并实现一个简单的计算器,实现连续的加减乘除运算. 界面设计 采用网格GridLayout布局,设计了一个6行4列的网格,最上边是一个EditText用来显示用户输入的运算数字和运算符,以及相关的运算结果,其占4列,文本框大小为50dip:依次往下的界面分别设置了数字和运算符以及操作的按钮,各行各列的每个按钮的大小均设为26sp. 编程分析 设计了两个文

  • Android Studio实现长方体表面积计算器

    本文实例为大家分享了Android Studio实现长方体.表面积计算器的具体代码,供大家参考,具体内容如下 写了两个方法(在我理解之中有三个方法,其中循环字符串匹配太low了,pass掉),目前先上传一个,后续补上. 针对这个问题 总共有四个文件 方法一:正则表达式 1.MainActivity.java package com.example.flyyu.four; import android.content.Intent; import android.support.v7.app.Ap

  • android studio实现简单的计算器功能

    本文实例为大家分享了android studio实现计算器的具体代码,供大家参考,具体内容如下 先来个效果图: 功能: 满足加减乘除四则运算规则,有回退.清除功能. 下面的代码只是完成基本功能,若添加背景图先看看下面的方法:Android Studio App设置背景图片 1.本地准备好图片,复制它,粘贴进mipmap(drawable)文件夹. 2.在activity_main.xml里添加下面代码,注意添加位置. 3.完成,效果图: content_main.xml文件(页面布局,conte

  • Android Studio实现简单计算器功能

    本文实例为大家分享了Android Studio实现简单计算器功能的具体代码,供大家参考,具体内容如下 程序步骤: (1)在布局文件定义一些计算器界面的文本框,按钮等组件. (2)在Activity中获取组件实例. (3)通过swtich函数,判断输入的内容,并进行相应操作,通过getText()获取文本内容,setText()显示. 程序代码设计: 一.界面布局 参考书本例2-9,应用网格布局设计计算器界面,在设计区域设置一个6行4列的网格布局,第一行为显示数据的文本标签,第二行为清除数据的按

  • Android studio实现简单的计算器

    本文实例为大家分享了Android studio实现简单计算器的具体代码,供大家参考,具体内容如下 需求分析及概要设计 目的 开发一个简单的计算器App,使之能够完成加减乘除混合运算 工具及环境 使用java语言,在Android studio平台上进行开发 功能设计 "+":实现两数相加 "-":实现两数相减 "*":实现两数相乘 "/":实现两数相除 "=":计算并得出正确结果 "C"

随机推荐