中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android?Studio怎么實現簡易計算器App

發布時間:2022-05-20 17:49:12 來源:億速云 閱讀:243 作者:iii 欄目:開發技術

本篇內容主要講解“Android Studio怎么實現簡易計算器App”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“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="x2"
                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="2√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”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建昌县| 孝义市| 新密市| 盘锦市| 大港区| 离岛区| 淮阳县| 读书| 桑植县| 进贤县| 万荣县| 桂林市| 泽州县| 蒙山县| 台北市| 吴桥县| 分宜县| 河池市| 汝阳县| 深圳市| 北海市| 白山市| 额尔古纳市| 闽清县| 临海市| 绍兴市| 宿州市| 宣城市| 大洼县| 长白| 柳江县| 云霄县| 平凉市| 甘孜县| 临泉县| 黔南| 巴塘县| 镇巴县| 饶河县| 宁南县| 麦盖提县|