欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器

 更新時(shí)間:2020年10月21日 16:41:29   作者:Red&&Black  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器的具體代碼,供大家參考,具體內(nèi)容如下

布局(activity_main.xml)

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://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>

響應(yīng)及計(jì)算(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;

 //數(shù)字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;

 //運(yùn)算符
 private Button per;
 private Button add;// +
 private Button sub; // -
 private Button mul; // *
 private Button div; // /
 private Button dot; //小數(shù)點(diǎn)
 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());//結(jié)果集就為本身
     }
    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;
  }


 }

 //計(jì)算結(jié)果
 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("[-÷×+]");  //分割字符串獲得各個(gè)數(shù)字
  double []n = new double[num.length];
  for(int i=0;i<num.length;i++)  //字符串轉(zhuǎn)數(shù)字
  {
   if(num[i].equals(""))continue;
    //百分號(hào)
   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;   //負(fù)數(shù)情況
  char[] sy = s1.replaceAll("[^-÷×+]","").toCharArray(); //獲得運(yùn)算符
  int slen = sy.length;
  if(sy.length == num.length)slen--;
  char c = '+';
  double result = n[0] ;                //結(jié)果
  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] = '+'; //判斷乘除的前一個(gè)運(yùn)算符是什么
     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
  { //控制輸出小數(shù)點(diǎn)后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);

  //運(yùn)算符

  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);//小數(shù)點(diǎn)
  View equ = findViewById(R.id.equ);//=
  View clear = findViewById(R.id.clear);//清空
  View back = findViewById(R.id.back); //回退

  editText = (EditText) findViewById(R.id.editText);//結(jié)果集

  //添加監(jiān)聽事件
  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);

 }



}

測(cè)試

關(guān)于計(jì)算器的精彩文章請(qǐng)查看《計(jì)算器專題》 ,更多精彩等你來發(fā)現(xiàn)!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android中使用CircleImageView和Cardview制作圓形頭像的方法

    Android中使用CircleImageView和Cardview制作圓形頭像的方法

    這篇文章主要介紹了Android中使用CircleImageView和Cardview制作圓形頭像的方法,簡(jiǎn)單介紹了CircleImageView和Cardview的使用,需要的朋友可以參考下
    2016-09-09
  • RecyclerView實(shí)現(xiàn)橫向滾動(dòng)效果

    RecyclerView實(shí)現(xiàn)橫向滾動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了RecyclerView實(shí)現(xiàn)橫向滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 解決Android 高CPU占用率的問題

    解決Android 高CPU占用率的問題

    最近測(cè)試測(cè)試APP的一個(gè)功能,發(fā)現(xiàn)點(diǎn)擊頁(yè)面上的按鈕后,CPU占有率比之前的版本要高,所以本文給大家介紹了如何解決Android 高CPU占用率的問題,需要的朋友可以參考下
    2023-09-09
  • Android 中ViewPager重排序與更新實(shí)例詳解

    Android 中ViewPager重排序與更新實(shí)例詳解

    這篇文章主要介紹了Android 中ViewPager重排序與更新實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Kotlin基礎(chǔ)通關(guān)之字符串與數(shù)字類型

    Kotlin基礎(chǔ)通關(guān)之字符串與數(shù)字類型

    這篇文章主要介紹了Kotlin基礎(chǔ)知識(shí)中的字符串與數(shù)字類型,編程中的入門知識(shí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Android設(shè)置PreferenceCategory背景顏色的方法

    Android設(shè)置PreferenceCategory背景顏色的方法

    這篇文章主要介紹了Android設(shè)置PreferenceCategory背景顏色的方法,涉及Android設(shè)置背景色的技巧,需要的朋友可以參考下
    2015-05-05
  • Android的廣播Receiver動(dòng)態(tài)注冊(cè)和靜態(tài)注冊(cè)示例

    Android的廣播Receiver動(dòng)態(tài)注冊(cè)和靜態(tài)注冊(cè)示例

    本篇文章主要介紹了Android的廣播Receiver動(dòng)態(tài)注冊(cè)和靜態(tài)注冊(cè)示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Android 自定義日期段選擇控件功能(開始時(shí)間-結(jié)束時(shí)間)

    Android 自定義日期段選擇控件功能(開始時(shí)間-結(jié)束時(shí)間)

    這篇文章主要介紹了Android 自定義日期段選擇控件功能,開始時(shí)間-結(jié)束時(shí)間。本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Handler實(shí)現(xiàn)線程之間的通信下載文件動(dòng)態(tài)更新進(jìn)度條

    Handler實(shí)現(xiàn)線程之間的通信下載文件動(dòng)態(tài)更新進(jìn)度條

    每一個(gè)線程對(duì)應(yīng)一個(gè)消息隊(duì)列MessageQueue,實(shí)現(xiàn)線程之間的通信,可通過Handler對(duì)象將數(shù)據(jù)裝進(jìn)Message中,再將消息加入消息隊(duì)列,而后線程會(huì)依次處理消息隊(duì)列中的消息。這篇文章主要介紹了Handler實(shí)現(xiàn)線程之間的通信下載文件動(dòng)態(tài)更新進(jìn)度條,需要的朋友可以參考下
    2017-08-08
  • Android中BaseAdapter的用法分析與理解

    Android中BaseAdapter的用法分析與理解

    這篇文章主要介紹了Android中BaseAdapter的用法分析與理解,結(jié)合一個(gè)項(xiàng)目開發(fā)中BaseAdapter的使用分析了BaseAdapter的功能、作用及用法理解,需要的朋友可以參考下
    2016-08-08

最新評(píng)論