新西兰服务器

Android Studio怎么实现简易计算器App


Android Studio怎么实现简易计算器App

发布时间:2022-05-20 17:49:12 来源:高防服务器网 阅读:93 作者:iii 栏目:开发技术

本篇内容主要讲解“Android Studio怎么实现简易计算器App”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android Studio怎么实现简易计算器App”吧!

效果演示

布局文件

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:orientation="vertical" android:layout_width="match_parent"      android:layout_height="match_parent">        <LinearLayout          android:layout_width="match_parent"          android:layout_height="0dp"          android:layout_weight="2"          android:orientation="vertical">          <TextView              android:id="@+id/mini"              android:layout_width="match_parent"              android:layout_height="wrap_content"              android:textSize="40dp"              android:text=""              android:textDirection="rtl"/>          <TextView              android:id="@+id/max"              android:layout_width="match_parent"              android:layout_height="wrap_content"              android:textSize="100dp"              android:text=""              android:textDirection="rtl"/>      </LinearLayout>      <LinearLayout          android:layout_width="match_parent"          android:layout_height="0dp"          android:layout_weight="1"          android:orientation="horizontal">          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="%"                  android:textSize="30dp"                  android:onClick="surplus"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="CE"                  android:textSize="30dp"                  android:onClick="clearce"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="C"                  android:textSize="30dp"                  android:onClick="clearc"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="⇦"                  android:textSize="30dp"                  android:onClick="backsprce"/>          </LinearLayout>        </LinearLayout>      <LinearLayout          android:layout_width="match_parent"          android:layout_height="0dp"          android:layout_weight="1"          android:orientation="horizontal">          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="1/x"                  android:textSize="30dp"                  android:onClick="reciprocal"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="x²"                  android:textSize="30dp"                  android:onClick="square"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="²√x"                  android:textSize="30dp"                  android:onClick="squareroot"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="÷"                  android:textSize="60dp"                  android:onClick="division"/>          </LinearLayout>        </LinearLayout>      <LinearLayout          android:layout_width="match_parent"          android:layout_height="0dp"          android:layout_weight="1"          android:orientation="horizontal">          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="7"                  android:textSize="30dp"                  android:onClick="number_7"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="8"                  android:textSize="30dp"                  android:onClick="number_8"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="9"                  android:textSize="30dp"                  android:onClick="number_9"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="×"                  android:textSize="30dp"                  android:onClick="multiplication"/>          </LinearLayout>        </LinearLayout>      <LinearLayout          android:layout_width="match_parent"          android:layout_height="0dp"          android:layout_weight="1"          android:orientation="horizontal">          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="4"                  android:textSize="30dp"                  android:onClick="number_4"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="5"                  android:textSize="30dp"                  android:onClick="number_5"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="6"                  android:textSize="30dp"                  android:onClick="number_6"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="-"                  android:textSize="30dp"                  android:onClick="subtraction"/>          </LinearLayout>        </LinearLayout>      <LinearLayout          android:layout_width="match_parent"          android:layout_height="0dp"          android:layout_weight="1"          android:orientation="horizontal">          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="1"                  android:textSize="30dp"                  android:onClick="number_1"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="2"                  android:textSize="30dp"                  android:onClick="number_2"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="3"                  android:textSize="30dp"                  android:onClick="number_3"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="+"                  android:textSize="30dp"                  android:onClick="addition"/>          </LinearLayout>        </LinearLayout>      <LinearLayout          android:layout_width="match_parent"          android:layout_height="0dp"          android:layout_weight="1"          android:orientation="horizontal">          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="±"                  android:textSize="30dp"                  android:onClick="change"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="0"                  android:textSize="30dp"                  android:onClick="number_0"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="."                  android:textSize="30dp"/>          </LinearLayout>          <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_weight="1">              <Button                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:text="="                  android:textSize="30dp"                  android:onClick="equal"/>          </LinearLayout>        </LinearLayout>    </LinearLayout>

Java文件

import android.app.Activity;  import android.os.Bundle;  import android.view.View;  import android.widget.TextView;  import android.widget.Toast;    import androidx.annotation.Nullable;    public class MainActivity extends Activity {        private TextView tv1;      private TextView tv2;      private StringBuilder viewStr;      private int index = 0;        @Override      protected void onCreate(@Nullable Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main_calc);          tv1 = (TextView) findViewById(R.id.mini);          tv2 = (TextView) findViewById(R.id.max);          viewStr = new StringBuilder();          index = 0;      }        //加减乘除、求余简单运算方法      public String calc(StringBuilder strB) {          String allS = strB.toString();          String[] asmd = {"+","-","×","÷","%"};          int x = 0; int y = 0;          String result = null;          for (int i = 0; i < 5; i ++) {              int inde = strB.indexOf(asmd[i]);              if (inde > 0) {                  String a = allS.split(asmd[i])[0];                  String b = allS.split(asmd[i])[1];                  if (i == 0) {result = String.valueOf(Integer.parseInt(a) + Integer.parseInt(b));}                  if (i == 1) {result = String.valueOf(Integer.parseInt(a) - Integer.parseInt(b));}                  if (i == 2) {result = String.valueOf(Integer.parseInt(a) * Integer.parseInt(b));}                  if (i == 3) {                      if (Integer.parseInt(b) == 0) {                          Toast.makeText(this,"0不能为除数",Toast.LENGTH_SHORT).show();                          result = String.valueOf(Integer.parseInt(a));                      }else {                          result = String.valueOf(Integer.parseInt(a) / Integer.parseInt(b));                      }                  }                  if (i == 4) {result = String.valueOf(Integer.parseInt(a) % Integer.parseInt(b));}              }          }          return result;      }        //数字按钮事件      public void number_0(View view) { viewStr.append("0"); index ++ ; tv2.setText(viewStr); }      public void number_1(View view) { viewStr.append("1"); index ++ ; tv2.setText(viewStr); }      public void number_2(View view) { viewStr.append("2"); index ++ ; tv2.setText(viewStr); }      public void number_3(View view) { viewStr.append("3"); index ++ ; tv2.setText(viewStr); }      public void number_4(View view) { viewStr.append("4"); index ++ ; tv2.setText(viewStr); }      public void number_5(View view) { viewStr.append("5"); index ++ ; tv2.setText(viewStr); }      public void number_6(View view) { viewStr.append("6"); index ++ ; tv2.setText(viewStr); }      public void number_7(View view) { viewStr.append("7"); index ++ ; tv2.setText(viewStr); }      public void number_8(View view) { viewStr.append("8"); index ++ ; tv2.setText(viewStr); }      public void number_9(View view) { viewStr.append("9"); index ++ ; tv2.setText(viewStr); }        //回退按钮事件      public void backsprce(View view) {          if (viewStr.length() == 0) return;          index = viewStr.length();          viewStr.deleteCharAt(--index); tv2.setText(viewStr);      }        //符号改变按钮事件      public void change(View view) {          String allS = viewStr.toString();          String[] asmd = {"+","-","×","÷","%"};          int inde = 0;          String a = null;    //保存字符串中运算符部分          String b = null;    //保存字符串中数字部分          for (int i = 0; i < 5; i ++) {              inde = viewStr.indexOf(asmd[i]);              if (inde != -1) {                  a = asmd[i];                  break;              }          }          //A 字符形 改变 A 正负值          if (inde == -1) {              clearc(view);              int c = - Integer.parseInt(allS);              viewStr.append(String.valueOf(c));              index = String.valueOf(c).length();              tv2.setText(viewStr);          }          //A + 字符串形 改变 A 正负值 暂时无法实现,待后续优化          if (inde == index - 1) {              return;  //            clearc(view);  //            int c = - Integer.valueOf(allS.split(a)[0]);  //            viewStr.append(String.valueOf(c));  //            index = String.valueOf(c).length();  //            tv2.setText(viewStr);          }          //A + B 字符串形 改变 B 正负值          if (inde >= 0 && inde < index) {              clearc(view);              b = allS.split(a)[0];              int c = - Integer.parseInt(allS.split(a)[1]);              viewStr.append(b).append(a).append(String.valueOf(c));              index = String.valueOf(c).length();              tv2.setText(viewStr);          }      }        //清空按钮事件      public void clearc(View view) {          StringBuilder temp = new StringBuilder();          viewStr = temp.append("");          tv2.setText(viewStr);          index = 0;      }      public void clearce(View view) {          StringBuilder temp = new StringBuilder();          viewStr = temp.append("");          tv1.setText("");          tv2.setText(viewStr);          index = 0;      }        //等于按钮事件      public void equal(View view) {          String[] asmd = {"+","-","×","÷","%"};          StringBuilder temp = new StringBuilder();          for (int i = 0; i < 5; i ++) {              int inde = viewStr.indexOf(asmd[i]);              if (inde > 0 && inde != index-1) {                  tv1.setText(calc(viewStr));                  String a = calc(viewStr);                  viewStr = temp.append(a);                  tv2.setText(viewStr);                  index = viewStr.length();                  return;              }else if (inde > 0 && inde == index-1) {                  viewStr.deleteCharAt(--index);                  tv1.setText(viewStr);                  tv2.setText(viewStr);              }          }          tv1.setText(viewStr);          tv2.setText(viewStr);      }        //加减乘除按钮事件      public void addition(View view) {          if (viewStr.length() == 0) return;          String[] asmd = {"+","-","×","÷","%"};          StringBuilder temp = new StringBuilder();          for (int i = 0; i < 5; i ++) {              int inde = viewStr.indexOf(asmd[i]);              if (inde > 0 && viewStr.charAt(index-1) >= '0' && viewStr.charAt(index-1) <= '9') {                  tv1.setText(calc(viewStr));                  String a = calc(viewStr);                  viewStr = temp.append(a).append('+');                  tv2.setText(viewStr);                  index = viewStr.length();                  return;              }          }          char a = viewStr.charAt(index-1);          if (a == '+') { return; }          if (a == '-' || a == '×' || a == '÷' || a == '%') {              viewStr.setCharAt(index-1,'+');          }else {              viewStr.append("+");              index ++ ;          }          tv2.setText(viewStr);      }      public void subtraction(View view) {          if (viewStr.length() == 0) return;          String[] asmd = {"+","-","×","÷","%"};          StringBuilder temp = new StringBuilder();          for (int i = 0; i < 5; i ++) {              int inde = viewStr.indexOf(asmd[i]);              if (inde > 0 && viewStr.charAt(index-1) >= '0' && viewStr.charAt(index-1) <= '9') {                  tv1.setText(calc(viewStr));                  String a = calc(viewStr);                  viewStr = temp.append(a).append('-');                  tv2.setText(viewStr);                  index = viewStr.length();                  return;              }          }          char a = viewStr.charAt(index-1);          if (a == '-') { return; }          if (a == '+' || a == '×' || a == '÷' || a == '%') {              viewStr.setCharAt(index-1,'-');          }else {              viewStr.append("-");              index ++ ;          }          tv2.setText(viewStr);      }      public void multiplication(View view) {          if (viewStr.length() == 0) return;          String[] asmd = {"+","-","×","÷","%"};          StringBuilder temp = new StringBuilder();          for (int i = 0; i < 5; i ++) {              int inde = viewStr.indexOf(asmd[i]);              if (inde > 0 && viewStr.charAt(index-1) >= '0' && viewStr.charAt(index-1) <= '9') {                  tv1.setText(calc(viewStr));                  String a = calc(viewStr);                  viewStr = temp.append(a).append('×');                  tv2.setText(viewStr);                  index = viewStr.length();                  return;              }          }          char a = viewStr.charAt(index-1);          if (a == '×') { return; }          if (a == '+' || a == '-' || a == '÷' || a == '%') {              viewStr.setCharAt(index-1,'×');          }else {              viewStr.append("×");              index ++ ;          }          tv2.setText(viewStr);      }      public void division(View view) {          if (viewStr.length() == 0) return;          String[] asmd = {"+","-","×","÷","%"};          StringBuilder temp = new StringBuilder();          for (int i = 0; i < 5; i ++) {              int inde = viewStr.indexOf(asmd[i]);              if (inde > 0 && viewStr.charAt(index-1) >= '0' && viewStr.charAt(index-1) <= '9') {                  tv1.setText(calc(viewStr));                  String a = calc(viewStr);                  viewStr = temp.append(a).append('÷');                  tv2.setText(viewStr);                  index = viewStr.length();                  return;              }          }          char a = viewStr.charAt(index-1);          if (a == '÷') { return; }          if (a == '+' || a == '-' || a == '×' || a == '%') {              viewStr.setCharAt(index-1,'÷');          }else {              viewStr.append("÷");              index ++ ;          }          tv2.setText(viewStr);      }        //求余按钮事件      public void surplus(View view) {          if (viewStr.length() == 0) return;          String[] asmd = {"+","-","×","÷","%"};          StringBuilder temp = new StringBuilder();          for (int i = 0; i < 5; i ++) {              int inde = viewStr.indexOf(asmd[i]);              if (inde > 0 && viewStr.charAt(index-1) >= '0' && viewStr.charAt(index-1) <= '9') {                  tv1.setText(calc(viewStr));                  String a = calc(viewStr);                  viewStr = temp.append(a).append('%');                  tv2.setText(viewStr);                  index = viewStr.length();                  return;              }          }          char a = viewStr.charAt(index-1);          if (a == '%') { return; }          if (a == '+' || a == '-' || a == '×' || a == '÷') {              viewStr.setCharAt(index-1,'%');          }else {              viewStr.append("%");              index ++ ;          }          tv2.setText(viewStr);      }        //求倒数按钮事件      public void reciprocal(View view) {          if (viewStr.length() == 0) return;          String[] asmd = {"+","-","×","÷","%"};          for (int i = 0; i < 5; i ++) {              int inde = viewStr.indexOf(asmd[i]);              if (inde > -1) { return; }          }          int a = Integer.parseInt(viewStr.toString().trim());          if (a == 0) {              Toast.makeText(this,"0不能为除数",Toast.LENGTH_SHORT).show();              return;          }          clearc(view);          viewStr.append(1/a);          index = String.valueOf(1/a).length();          tv2.setText(viewStr);      }        //平方按钮事件      public void square(View view) {          if (viewStr.length() == 0) return;          String[] asmd = {"+","-","×","÷","%"};          for (int i = 0; i < 5; i ++) {              int inde = viewStr.indexOf(asmd[i]);              if (inde > -1) { return; }          }          int a = Integer.parseInt(viewStr.toString().trim());          clearc(view);          viewStr.append(a*a);          index = String.valueOf(a*a).length();          tv2.setText(viewStr);      }        //开平方按钮事件      public void squareroot(View view) {          if (viewStr.length() == 0) return;          String[] asmd = {"+","-","×","÷","%"};          for (int i = 0; i < 5; i ++) {              int inde = viewStr.indexOf(asmd[i]);              if (inde > -1) { return; }          }          int a = Integer.parseInt(viewStr.toString().trim());          clearc(view);          viewStr.append((int)Math.sqrt(a));          index = String.valueOf((int)Math.sqrt(a)).length();          tv2.setText(viewStr);      }    }

到此,相信大家对“Android Studio怎么实现简易计算器App”有了更深的了解,不妨来实际操作一番吧!这里是高防服务器网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[