android开发分享Android-简易计算器

文章目录布局(activity_main.xml)响应及计算(MainActivity)测试布局(activity_main.xml)<GridLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:tools=”http://schemas.android.com/tools” android:id=”@+id/GridLayout1″

文章目录

  • 布局(activity_main.xml)
  • 响应及计算(MainActivity)
  • 测试

布局(activity_main.xml)

<GridLayout xmlns:android="https://schemas.android.com/apk/res/android"             xmlns:tools="https://schemas.android.com/tools"             android:id="@+id/GridLayout1"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:columnCount="4"             android:orientation="horizontal"             android:rowCount="6" >      <EditText             android:id="@+id/editText"             android:layout_columnSpan="4"             android:layout_gravity="fill"             android:layout_marginLeft="5dp"             android:layout_marginRight="5dp"             android:text="0"             android:textSize="50sp" />        <Button             android:id="@+id/clear"             android:layout_columnSpan="1"             android:layout_gravity="fill"             android:text="清空"             android:textColor="#FF4500"      />      <Button             android:id="@+id/back"             android:layout_columnSpan="1"             android:layout_gravity="fill"             android:text="回退"             android:textColor="#FF4500"      />      <Button             android:id="@+id/per"             android:text="%"             android:textColor="#FF4500"      />      <Button             android:id="@+id/div"             android:text="÷"             android:textColor="#FF4500"      />      <Button             android:id="@+id/b7"             android:text="7"      />      <Button             android:id="@+id/b8"             android:text="8"     />      <Button             android:id="@+id/b9"             android:text="9"     />      <Button             android:id="@+id/mul"             android:text="×"             android:textColor="#FF4500"     />      <Button             android:id="@+id/b4"             android:text="4"     />      <Button             android:id="@+id/b5"             android:text="5"     />      <Button             android:id="@+id/b6"             android:text="6"     />      <Button             android:id="@+id/sub"             android:text="-"             android:textColor="#FF4500"      />      <Button             android:id="@+id/b1"             android:text="1"     />      <Button             android:id="@+id/b2"             android:text="2"     />      <Button             android:id="@+id/b3"             android:text="3"     />      <Button             android:id="@+id/plus"             android:layout_width="wrap_content"             android:text="+"             android:textColor="#FF4500"      />      <Button             android:id="@+id/b00"             android:text="00"     />     <Button             android:id="@+id/b0"             android:text="0"     />     <Button             android:id="@+id/dot"             android:text="."     />      <Button             android:id="@+id/equ"             android:text="="             android:background="#008B8B"     />  </GridLayout> 

响应及计算(MainActivity)

package com.mylayout;  import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText;   public class MainActivity extends AppCompatActivity implements View.OnClickListener {      private EditText editText;      //数字0-9     private Button b1;     private Button b2;     private Button b3;     private Button b4;     private Button b5;     private Button b6;     private Button b7;     private Button b8;     private Button b9;     private Button b0;     private Button b00;      //运算符     private  Button per;     private  Button add;// +     private  Button sub;  // -     private  Button mul;  // *     private  Button div;  // /     private  Button dot;  //小数点     private  Button equ;  // =          private boolean back; //退格      private boolean clear_bool= true;//清空     private boolean dot_flag1 = true;     private boolean dot_flag2 = true;      @Override     public void onClick(View view) {          String input = editText.getText().toString();         switch (view.getId()){              case R.id.b0:             case R.id.b1:             case R.id.b2:             case R.id.b3:             case R.id.b4:             case R.id.b5:             case R.id.b6:             case R.id.b7:             case R.id.b8:             case R.id.b9:             case R.id.b00:                  if(dot_flag1)dot_flag2 = true;                  if(clear_bool)                  {                      clear_bool = false;                      editText.setText(""+((Button)view).getText());                  }                  else                  {                      editText.setText(input + ((Button)view).getText());//结果集就为本身                  }                 break;             case R.id.dot:                   if(dot_flag1&&dot_flag2)                   {                       dot_flag1 = false;                       dot_flag2 = false;                       editText.setText(input + ((Button)view).getText());                   }                   break;             case R.id.per:             case R.id.plus:             case R.id.sub:             case R.id.mul:             case R.id.div:                 dot_flag1 = true;                 if(clear_bool)                 {                     clear_bool = false;                     input = "";                     editText.setText("");                 }                 editText.setText(input + ((Button)view).getText()+" ");                 break;             case R.id.back:   //退格                 if(input != null || !input.equals("")) {                    if(input.length()>1) {                        editText.setText(input.substring(0, input.length() - 1));//                    }                    else{                        clear_bool =true;                        editText.setText("0");                    }                   }                 break;             case R.id.clear: //清空                 editText.setText("0");                 clear_bool = true;                 break;             case R.id.equ:                 calculation();                 break;         }       }      //计算结果     private void calculation() {         String s1 = editText.getText().toString();         //获取字符串         if (s1 == null){             return;         }         boolean flag = false;         if(s1.charAt(0)=='-')         {             s1 = s1.substring(1);             flag = true;         }         String []num = s1.split("[-÷×+]");     //分割字符串获得各个数字         double []n = new double[num.length];         for(int i=0;i<num.length;i++)        //字符串转数字         {             if(num[i].equals(""))continue;                 //百分号             else if(num[i].contains("%")) n[i] = Double.parseDouble(num[i].replace("%",""))/100;                 //开根  //            else if(num[i].contains("√")) n[i] = Math.sqrt(Double.parseDouble(num[i].replace("√", "")));             else n[i] = Double.parseDouble(num[i]);         }          if(flag) n[0] -= n[0]*2;          //负数情况         char[] sy = s1.replaceAll("[^-÷×+]","").toCharArray();  //获得运算符         int slen = sy.length;         if(sy.length == num.length)slen--;         char c = '+';         double result = n[0] ;                                                               //结果         if(n.length>1)         {             for (int j = 0; j < slen; j++)             //先算乘除             {                 if (sy[j] == '×')                 {                     n[j + 1] = n[j] * n[j + 1];                     n[j] = 0;                     if (c == '+') sy[j] = '+';  //判断乘除的前一个运算符是什么                     else sy[j] = '-';                 }                 else if (sy[j] == '÷')                 {                     if (n[j + 1] != 0) n[j + 1] = n[j] / n[j + 1];                     else n[j + 1] = 0;                     n[j] = 0;                     if (c == '+') sy[j] = '+';                     else sy[j] = '-';                 } else                     c = sy[j];             }             result = n[0];             for (int j = 0; j < slen; j++) {               //求和                 if (sy[j] == '+') result += n[j + 1];                 if (sy[j] == '-') result -= n[j + 1];             }         }         if((int)result == result )editText.setText((int)result+"");                            //显示         else         {	//控制输出小数点后6位             result = Double.parseDouble(String.format("%.6f", result));             editText.setText(result+"");         }       }       @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          //获取id         View b1 = findViewById(R.id.b1);         View b2 = findViewById(R.id.b2);         View b3= findViewById(R.id.b3);         View b4 = findViewById(R.id.b4);         View b5 = findViewById(R.id.b5);         View b6 = findViewById(R.id.b6);         View b7 = findViewById(R.id.b7);         View b8 = findViewById(R.id.b8);         View b9 = findViewById(R.id.b9);         View b0 = findViewById(R.id.b0);         View b00 = findViewById(R.id.b00);          //运算符          View plus = findViewById(R.id.plus);// +         View sub = findViewById(R.id.sub);// -         View mul = findViewById(R.id.mul);// *         View per = findViewById(R.id.per); // %         View div = findViewById(R.id.div); // /         View dot = findViewById(R.id.dot);//小数点         View equ = findViewById(R.id.equ);//=         View clear = findViewById(R.id.clear);//清空         View back = findViewById(R.id.back); //回退          editText = (EditText) findViewById(R.id.editText);//结果集          //添加监听事件         b0.setOnClickListener(this);         b1.setOnClickListener(this);         b2.setOnClickListener(this);         b3.setOnClickListener(this);         b4.setOnClickListener(this);         b5.setOnClickListener(this);         b6.setOnClickListener(this);         b7.setOnClickListener(this);         b8.setOnClickListener(this);         b9.setOnClickListener(this);         b00.setOnClickListener(this);          per.setOnClickListener(this);         plus.setOnClickListener(this);         sub.setOnClickListener(this);         mul.setOnClickListener(this);         div.setOnClickListener(this);         dot.setOnClickListener(this);         equ.setOnClickListener(this);         clear.setOnClickListener(this);         back.setOnClickListener(this);      }    }   

测试

Android-简易计算器
Android-简易计算器

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/addevelopment/892615.html

(0)
上一篇 2021年10月20日
下一篇 2021年10月20日

精彩推荐