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>

关于计算器的精彩文章请查看《计算器专题》 ,更多精彩等你来发现!

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

以上是 android studio实现简单的计算器(无bug) 的全部内容, 来源链接: utcz.com/p/242956.html

回到顶部