iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android Studio实现带三角函数对数运算功能的高级计算器
  • 722
分享到

Android Studio实现带三角函数对数运算功能的高级计算器

2024-04-02 19:04:59 722人浏览 八月长安
摘要

用AndroidStudio编写高级计算器带三角函数对数运算功能 界面效果图: layout布局 activity_jisuanqi.xml代码: <?xml version

AndroidStudio编写高级计算器带三角函数对数运算功能

界面效果图:

layout布局 activity_jisuanqi.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="5dp" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="100dp"
            android:layout_weight="1"

            android:orientation="vertical"
            android:paddingBottom="5dp" >

            <TextView
                android:id="@+id/text0"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1.2"

                android:gravity="right"
                android:scrollHorizontally="true"
                android:textColor="#ff000000"
                android:textSize="25sp" />

            <TextView
                android:id="@+id/text1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"

                android:gravity="right"
                android:scrollHorizontally="true"
                android:text="0"
                android:textColor="#ff000000"
                android:textSize="30sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="21dp"
            android:layout_weight="1"
            android:orientation="vertical" >
        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:orientation="horizontal">

            <Button
                android:id="@+id/factorial"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="!" />

            <Button
                android:id="@+id/power"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="^" />

            <Button
                android:id="@+id/square_root"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="√" />

            <Button
                android:id="@+id/pai"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:textAllCaps="false"
                android:text="π" />

            <Button
                android:id="@+id/c"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:textAllCaps="false"
                android:text="C"
                android:textColor="#ffff0000" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:orientation="horizontal">

            <Button
                android:id="@+id/sin"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:textAllCaps="false"
                android:text="sin" />

            <Button
                android:id="@+id/brackets1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="(" />

            <Button
                android:id="@+id/brackets2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text=")" />

            <Button
                android:id="@+id/e"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:textAllCaps="false"
                android:text="e" />

            <Button
                android:id="@+id/del"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="DEL" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:orientation="horizontal">

            <Button
                android:id="@+id/cos"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:textAllCaps="false"
                android:text="cos" />

            <Button
                android:id="@+id/seven"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="7" />

            <Button
                android:id="@+id/eight"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="8" />

            <Button
                android:id="@+id/nine"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="9" />

            <Button
                android:id="@+id/division"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="÷" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:orientation="horizontal">

            <Button
                android:id="@+id/tan"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:textAllCaps="false"
                android:text="tan" />

            <Button
                android:id="@+id/four"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="4" />

            <Button
                android:id="@+id/five"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="5" />

            <Button
                android:id="@+id/six"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="6" />

            <Button
                android:id="@+id/multiple"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="×" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:orientation="horizontal">

            <Button
                android:id="@+id/ln"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:textAllCaps="false"
                android:text="ln" />

            <Button
                android:id="@+id/one"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="1" />

            <Button
                android:id="@+id/two"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="2" />

            <Button
                android:id="@+id/three"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="3" />

            <Button
                android:id="@+id/subtract"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="-" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:orientation="horizontal">

            <Button
                android:id="@+id/log"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:textAllCaps="false"
                android:text="log" />

            <Button
                android:id="@+id/zero"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="0" />

            <Button
                android:id="@+id/point"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="." />

            <Button
                android:id="@+id/add"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="+" />

            <Button
                android:id="@+id/eq"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="=" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

java类JisuanqiActivity代码:

package com.xueba.jsq;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class JisuanqiActivity extends Activity implements OnClickListener {
    
    private String string = "0";
    private Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0;
    private Button btnadd, btnsub, btnmul, btndiv, btnsin, btncos, btntan;
    private Button btnln, btnlog, btne, btneq, btnpoint, btndel, btnpower;
    private Button btnsq, btnpai, btnc, btnb1, btnb2, btnfa;
    private TextView btnt0, btnt1;
    private boolean flag = false;
    private GetValue getValue = new GetValue();
    private Judge judge = new Judge();

    private void init() {
        btn1 = (Button) this.findViewById(R.id.one);
        btn2 = (Button) this.findViewById(R.id.two);
        btn3 = (Button) this.findViewById(R.id.three);
        btn4 = (Button) this.findViewById(R.id.four);
        btn5 = (Button) this.findViewById(R.id.five);
        btn6 = (Button) this.findViewById(R.id.six);
        btn7 = (Button) this.findViewById(R.id.seven);
        btn8 = (Button) this.findViewById(R.id.eight);
        btn9 = (Button) this.findViewById(R.id.nine);
        btn0 = (Button) this.findViewById(R.id.zero);
        btnadd = (Button) this.findViewById(R.id.add);
        btnsub = (Button) this.findViewById(R.id.subtract);
        btnmul = (Button) this.findViewById(R.id.multiple);
        btndiv = (Button) this.findViewById(R.id.division);
        btnsin = (Button) this.findViewById(R.id.sin);
        btncos = (Button) this.findViewById(R.id.cos);
        btntan = (Button) this.findViewById(R.id.tan);
        btnln = (Button) this.findViewById(R.id.ln);
        btnlog = (Button) this.findViewById(R.id.log);
        btne = (Button) this.findViewById(R.id.e);
        btneq = (Button) this.findViewById(R.id.eq);
        btnpoint = (Button) this.findViewById(R.id.point);
        btndel = (Button) this.findViewById(R.id.del);
        btnpower = (Button) this.findViewById(R.id.power);
        btnfa = (Button) this.findViewById(R.id.factorial);
        btnsq = (Button) this.findViewById(R.id.square_root);
        btnpai = (Button) this.findViewById(R.id.pai);
        btnc = (Button) this.findViewById(R.id.c);
        btnb1 = (Button) this.findViewById(R.id.brackets1);
        btnb2 = (Button) this.findViewById(R.id.brackets2);
        btnt0 = (TextView) this.findViewById(R.id.text0);
        btnt1 = (TextView) this.findViewById(R.id.text1);

        this.btn0.setOnClickListener(this);
        this.btn1.setOnClickListener(this);
        this.btn2.setOnClickListener(this);
        this.btn3.setOnClickListener(this);
        this.btn4.setOnClickListener(this);
        this.btn5.setOnClickListener(this);
        this.btn6.setOnClickListener(this);
        this.btn7.setOnClickListener(this);
        this.btn8.setOnClickListener(this);
        this.btn9.setOnClickListener(this);
        this.btnadd.setOnClickListener(this);
        this.btnb1.setOnClickListener(this);
        this.btnb2.setOnClickListener(this);
        this.btnc.setOnClickListener(this);
        this.btncos.setOnClickListener(this);
        this.btndel.setOnClickListener(this);
        this.btndiv.setOnClickListener(this);
        this.btne.setOnClickListener(this);
        this.btneq.setOnClickListener(this);
        this.btnfa.setOnClickListener(this);
        this.btnln.setOnClickListener(this);
        this.btnlog.setOnClickListener(this);
        this.btnmul.setOnClickListener(this);
        this.btnpai.setOnClickListener(this);
        this.btnpoint.setOnClickListener(this);
        this.btnpower.setOnClickListener(this);
        this.btnsin.setOnClickListener(this);
        this.btnsq.setOnClickListener(this);
        this.btnsub.setOnClickListener(this);
        this.btntan.setOnClickListener(this);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_jisuanqi);
        this.init();
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        MenuItem exit = menu.add("EXIT");
        exit.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                finish();
                return true;
            }
        });
        return true;
    }

    @Override
    public void onClick(View v) {

        if ("error".equals(btnt1.getText().toString())
                || "∞".equals(btnt1.getText().toString())) {
            string = "0";
        }

        if (v == this.btn0) {
            string = judge.digit_judge(string, "0", flag);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btn1) {
            string = judge.digit_judge(string, "1", flag);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btn2) {
            string = judge.digit_judge(string, "2", flag);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btn3) {
            string = judge.digit_judge(string, "3", flag);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btn4) {
            string = judge.digit_judge(string, "4", flag);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btn5) {
            string = judge.digit_judge(string, "5", flag);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btn6) {
            string = judge.digit_judge(string, "6", flag);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btn7) {
            string = judge.digit_judge(string, "7", flag);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btn8) {
            string = judge.digit_judge(string, "8", flag);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btn9) {
            string = judge.digit_judge(string, "9", flag);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btneq) {
            btnt0.setText(string + "=");
            string = getValue.advanced_dispose(string);
            string = judge.digit_dispose(string);
            flag = true;
            btnt1.setText(string);
        } else if (v == this.btnadd) {
            string = judge.judge(string, "+");
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnsub) {
            string = judge.judge(string, "-");
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnmul) {
            string = judge.judge(string, "×");
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btndiv) {
            string = judge.judge(string, "÷");
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnb1) {
            if ("0".equals(string) || flag) {
                string = "(";
            } else
                string += "(";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnb2) {
            if ("0".equals(string) || flag) {
                string = ")";
            } else
                string += ")";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btne) {
            if ("0".equals(string)) {
                string = "e";
            } else
                string += "e";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnpower) {
            string += "^";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnfa) {
            string += "!";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnsq) {
            if ("0".equals(string) || flag)
                string = "";
            string += "√";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnpai) {
            if ("0".equals(string) || flag) {
                string = "π";
            } else
                string += "π";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnsin) {
            if ("0".equals(string) || flag) {
                string = "sin(";
            } else
                string += "sin(";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btncos) {
            if ("0".equals(string) || flag) {
                string = "cos(";
            } else
                string += "cos(";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btntan) {
            if ("0".equals(string) || flag) {
                string = "tan(";
            } else
                string += "tan(";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnln) {
            if ("0".equals(string) || flag) {
                string = "ln(";
            } else
                string += "ln(";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnpoint) {
            string = judge.judge1(string);
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnlog) {
            if ("0".equals(string) || flag) {
                string = "log(";
            } else
                string += "log(";
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btndel) {
            if (flag) {
                string = "";
                btnt0.setText(string);
                string = "0";
                btnt1.setText(string);
            }

            if (!"0".equals(string)) {
                string = string.substring(0, string.length() - 1);
                if (0 == string.length())
                    string = "0";
            }
            flag = false;
            btnt1.setText(string);
        } else if (v == this.btnc) {
            string = "";
            btnt0.setText(string);
            string = "0";
            btnt1.setText(string);
            flag = false;
        }
    }
}

java类GetValue代码:

package com.xueba.jsq;

import java.util.LinkedList;
import java.util.List;

public class GetValue {

    public String bracke_dispose(String string) {
        // 处理括号里的表达式,思路,
        // 1.遇到正括号就将它在字符串里的索引保存在一个链表里<插在链表头>
        // 2.遇到第一个反括号就处理这个括号里的表达式<取出链表第一个元素,然后根据这两个索引取出表达式,会调用一个专门处理
        // log,ln,sin,cos,tan等的special_dispose函数,将反回一个自由加减乘除的表达式,在调用alg_dispose函数>
        // 3.函数处理后返回一个可能还含有log,ln,sin,cos,tan等的但没有括号的表达式;

        int flag = 0, flag1 = 0, i = 0;
        int leng = string.length();
        List<Integer> list = new LinkedList<Integer>();
        Character c;
        String str = "", tmp = "", tmp3 = "", tmp4 = "";

        while (true) {
            if (i >= leng)
                break;

            c = string.charAt(i);

            if ('(' == c)
                list.add(0, i);

            if (')' == c) {
                if (0 == list.size()) {
                    System.out.println(")error");
                    return "error";
                }

                str = string.substring(list.get(0) + 1, i);
                tmp = this.special_dispose(str);
                tmp = this.alg_dispose(str);
                if ("error".equals(tmp))
                    return "error";

                tmp3 = string.substring(0, list.get(0));
                tmp4 = string.substring(i + 1, leng);
                string = tmp3 + tmp + tmp4;

                flag = str.length() + 2;
                flag1 = tmp.length();
                leng += (flag1 - flag);
                i += (flag1 - flag);
                list.remove(0);
            }
            i++;
        }

        if (list.size() != 0) {
            System.out.println("(error");
            return "error";
        }
        return string;
    }

    public String special_dispose(String string) {
        // 用于处理特殊表达式;

        if ("error".equals(string)) {
            return "error";
        }
        string = dispose(string, "sin");
        string = dispose(string, "cos");
        string = dispose(string, "tan");
        string = dispose(string, "log");
        string = dispose(string, "ln");
        string = dispose(string, "!");
        string = dispose(string, "^");
        string = dispose(string, "√");
        string = dispose(string, "e");
        return string;
    }

    public String alg_dispose(String string) {
        // 处理加减乘除
        string = special_dispose(string);

        if ("error".equals(string)) {
            return "error";
        }

        Character c;
        String str = "";
        List<Double> list = new LinkedList<Double>();
        double tmp = 0;
        boolean add_flag = false;

        for (int i = 0; i < string.length(); i++) {
            c = string.charAt(i);
            if (!Judge.paiduan(c)) {
                str += c;
            } else {
                if (str.length() != 0)
                    list.add(new Double(str));

                str = "";
                switch (c) {
                    case '+':
                        if (2 == list.size()) {
                            if (add_flag) {
                                tmp = list.get(0) + list.get(1);
                                list.clear();
                                list.add(tmp);
                            } else {
                                tmp = list.get(0) - list.get(1);
                                list.clear();
                                list.add(tmp);
                            }
                            break;
                        }
                        add_flag = true;
                        break;
                    case '-':
                        if (2 == list.size()) {
                            if (add_flag) {
                                tmp = list.get(0) + list.get(1);
                                list.clear();
                                list.add(tmp);
                            } else {
                                tmp = list.get(0) - list.get(1);
                                list.clear();
                                list.add(tmp);
                            }
                            add_flag = false;
                            break;
                        }
                        break;
                    case '×':
                        if (i == (string.length() - 1))
                            return "error";
                        while (!(i == (string.length() - 1))
                                && !Judge.paiduan((c = string.charAt(i + 1)))) {
                            str += c;
                            i++;
                        }

                        if (str.length() != 0)
                            list.add(new Double(str));
                        str = "";

                        if (list.size() == 2) {
                            tmp = list.get(0) * list.get(1);
                            list.clear();
                            list.add(0, tmp);
                        } else {
                            tmp = list.get(2) * list.get(1);
                            list.remove(2);
                            list.remove(1);
                            list.add(tmp);
                        }
                        break;
                    case '÷':
                        if (i == (string.length() - 1))
                            return "error";
                        while (!(i == (string.length() - 1))
                                && !Judge.paiduan((c = string.charAt(i + 1)))) {
                            str += c;
                            i++;
                        }

                        if (str.length() != 0)
                            list.add(new Double(str));
                        str = "";

                        if (list.size() == 2) {
                            tmp = list.get(0) / list.get(1);
                            list.clear();
                            list.add(0, tmp);
                        } else {
                            tmp = list.get(2) / list.get(1);
                            list.remove(2);
                            list.remove(1);
                            list.add(tmp);
                        }
                        break;
                    default:
                        break;
                }
            }
        }

        if (str.length() != 0)
            list.add(new Double(str));

        if (2 == list.size()) {
            if (add_flag) {
                tmp = list.get(0) + list.get(1);
                list.clear();
                list.add(tmp);
            } else {
                tmp = list.get(0) - list.get(1);
                list.clear();
                list.add(tmp);
            }
        }
        if (list.size() != 0)
            string = "" + list.get(0);

        return string;
    }

    public String get_r_digit(String string, int index) {
        // 得到index右边的第一个数;
        String tmp = "";
        int length = string.length(), j = index;
        Character character;

        if (index >= length)
            tmp = "error";

        while (true) {
            if (j == length)
                break;

            character = string.charAt(j);
            if (Character.isDigit(character) || (character == '.')) {
                tmp += character;
            } else
                break;
            j++;
        }

        if (0 == tmp.length())
            tmp = "error";
        System.out.println(tmp);
        return tmp;
    }

    public String get_l_digit(String string, int index) {
        // 得到index左边的第一个数;
        String tmp = "";
        int j = index;
        Character c;

        if (index < 0)
            tmp = "error";

        while (true) {
            if (j < 0)
                break;

            c = string.charAt(j);
            if (Character.isDigit(c) || (c == '.')) {
                tmp = "" + c + tmp;
            } else
                break;
            j--;
        }

        if (0 == tmp.length())
            tmp = "error";

        return tmp;
    }

    public String dispose1(String string) {
        // 将π替换为对应的数字;
        int index, leng = string.length();
        double tmp = Math.PI;
        while (leng != 0) {

            index = string.indexOf("π");

            if (-1 == index)
                break;

            if ((index != 0 && (index + 1) != leng)
                    && Character.isDigit(string.charAt(index + 1))
                    && Character.isDigit(string.charAt(index - 1))) {
                string = string.replaceFirst("π", "×" + tmp + "×");
            } else if (index != 0
                    && Character.isDigit(string.charAt(index - 1))) {
                string = string.replaceFirst("π", "×" + tmp);
            } else if (index != 0
                    && Character.isDigit(string.charAt(index + 1))) {
                string = string.replaceFirst("π", "" + tmp + "×");
            } else {
                string = string.replaceFirst("π", "" + tmp);
            }

        }
        return string;
    }

    public String dispose(String string, String dispose) {
        // 处理指定运算符;<log,ln,sin,cos,tan....>
        int index, flag = dispose.length(), flag1, flag2;
        String tmpString = "", tmpString1 = "", tmpString2 = "";
        Double tmp, tmp1;
        while (string.length() != 0) {
            index = string.indexOf(dispose);

            if (-1 == index)
                break;

            if ("!".equals(dispose)) {
                tmpString = get_l_digit(string, index - flag);
                if (!"error".equals(tmpString) && !"error".equals(tmpString1)) {
                    tmp = new Double(tmpString);
                } else {
                    return "error";
                }

                tmp1 = 1.0;
                for (int i = 1; i <= tmp; i++) {
                    tmp1 *= i;
                }

                tmpString2 = "" + tmp1;
                string = string.replaceFirst(tmpString + dispose, tmpString2);

            } else if ("e".equals(dispose)) {
                tmpString = get_r_digit(string, index + flag);
                tmpString1 = get_l_digit(string, index - flag);

                if (!"error".equals(tmpString) && !"error".equals(tmpString1)) {
                    tmp = new Double(tmpString);
                    tmp1 = new Double(tmpString1);
                } else {
                    return "error";
                }

                tmp = Math.pow(10, tmp);
                tmp1 *= tmp;

                tmpString2 = "" + tmp1;
                string = string.replaceFirst(tmpString1 + dispose + tmpString,
                        tmpString2);
                System.out.println(string);

            } else if ("^".equals(dispose)) {
                tmpString = get_r_digit(string, index + flag);
                tmpString1 = get_l_digit(string, index - flag);

                flag1 = tmpString.length();
                flag2 = tmpString1.length();

                if (!"error".equals(tmpString) && !"error".equals(tmpString1)) {
                    tmp = new Double(tmpString);
                    tmp1 = new Double(tmpString1);
                } else {
                    return "error";
                }

                tmp = Math.pow(tmp1, tmp);
                tmpString2 = "" + tmp;
                flag1 = index + flag1 + 1;
                flag2 = index - flag2;

                if (0 == flag2) {
                    tmpString = "";
                } else {
                    tmpString = string.substring(0, flag2);
                }
                if (string.length() == flag1) {
                    tmpString1 = "";
                } else {
                    tmpString1 = string.substring(flag1, string.length());
                }

                string = tmpString + tmpString2 + tmpString1;

            } else {
                tmpString = get_r_digit(string, index + flag);
                flag1 = tmpString.length();
                if (!"error".equals(tmpString))
                    tmp = new Double(tmpString);
                else {
                    return "error";
                }
                tmpString2 = tmpString;

                if ("sin".equals(dispose)) {
                    if ("error".equals(tmp))
                        return "error";
                    tmp = Math.sin(tmp);
                } else if ("cos".equals(dispose)) {
                    if ("error".equals(tmp))
                        return "error";
                    tmp = Math.cos(tmp);
                } else if ("tan".equals(dispose)) {
                    if ("error".equals(tmp))
                        return "error";
                    tmp = Math.tan(tmp);
                } else if ("log".equals(dispose)) {
                    if ("error".equals(tmp))
                        return "error";
                    tmp = Math.log10(tmp);
                } else if ("ln".equals(dispose)) {
                    if ("error".equals(tmp))
                        return "error";
                    tmp = Math.log(tmp);
                } else if ("√".equals(dispose)) {
                    if ("error".equals(tmp))
                        return "error";
                    tmp = Math.sqrt(tmp);
                } else if ("log".equals(dispose)) {
                    if ("error".equals(tmp))
                        return "error";
                    tmp = Math.log(tmp);
                }

                if (index != 0
                        && Character.isDigit(string.charAt(index - 1))) {
                    tmpString = "×" + tmp;
                } else {
                    tmpString = "" + tmp;
                }
                string = string.replaceFirst(dispose + tmpString2, tmpString);
            }
        }

        return string;
    }

    public String advanced_dispose(String string) {
        string = this.dispose1(string);
        string = this.bracke_dispose(string);
        string = this.alg_dispose(string);
        return string;
    }
}

java类Judge代码:

package com.xueba.jsq;


public class Judge {
    public String judge(String string, String c) {
        switch (string.charAt(string.length() - 1)) {
            case '+':
            case '-':
            case '×':
            case '÷':
                string = string.substring(0, string.length() - 1) + c;
                break;
            default:
                string += c;
                break;
        }
        return string;
    }

    public static String dispose(String string) {
        int leng = string.length() - 1;
        Character character;
        if (0 == leng) {
            return "error";
        }
        for (int i = 0; i < leng; i++) {
            character = string.charAt(i);
            if (Character.isLetter(character)) {
                return "error";
            }

        }

        return string;
    }

    public String judge1(String string) {
        int p = string.length() - 1;
        boolean flag = true;
        Character tmp = string.charAt(p);

        if (0 == p)
            string += ".";

        if (Character.isDigit(tmp) && 0 != p) {
            while (flag) {
                if (!Character.isDigit(tmp)) {
                    flag = false;
                    if (tmp != '.')
                        string += ".";
                }

                if (0 == --p && (tmp != '.')) {
                    string += ".";
                    break;
                }

                tmp = string.charAt(p);
            }

        }
        return string;
    }

    public static boolean paiduan(Character c) {
        switch (c) {
            case '+':
            case '-':
            case '×':
            case '÷':
                return true;
            default:
                return false;
        }
    }

    public String digit_judge(String string, String c, boolean flag) {
        if ("0".equals(string)) {
            string = c;
        } else if (flag) {
            string = c;
        } else
            string += c;
        return string;
    }

    public String digit_dispose(String string) {
        if ("error".equals(string)) {
            return string;
        }

        Double double1 = new Double(string);

        if(double1>999999999999999.0)
            return "∞";

        long l = (long) (double1 * 1e4);
        double1 = (Double) (l / 1e4);

        string = "" + double1;
        return string;
    }
}

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

--结束END--

本文标题: Android Studio实现带三角函数对数运算功能的高级计算器

本文链接: https://www.lsjlt.com/news/149305.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android Studio实现带三角函数对数运算功能的高级计算器
    用AndroidStudio编写高级计算器带三角函数对数运算功能 界面效果图: layout布局 activity_jisuanqi.xml代码: <xml version=...
    99+
    2024-04-02
  • Android studio开发实现计算器功能
    Android移动开发实现简单计算器功能,供大家参考,具体内容如下 前言 android 开发小实验android 移动开发实现 简易计算器功能小白也能轻松上手,复制粘贴就可使用 使...
    99+
    2024-04-02
  • android studio实现简单的计算器小功能
    本文实例为大家分享了android studio实现简单计算器的具体代码,供大家参考,具体内容如下 布局: <xml version="1.0" encoding="utf-8...
    99+
    2024-04-02
  • 用Android studio实现简易计算器功能
    用Android studio做一个简易计算器,供大家参考,具体内容如下 长话短说,先建立一个Android项目; 创建完成后打开activity_main.xml,构建我们的应...
    99+
    2024-04-02
  • Android Studio开发实现简单计算器功能
    本文实例为大家分享了Android Studio开发实现简单计算器的具体代码,供大家参考,具体内容如下 代码: activity_3.xml <xml version="1.0...
    99+
    2024-04-02
  • Android studio开发怎么实现计算器功能
    这篇文章主要介绍“Android studio开发怎么实现计算器功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android studio开发怎么实现计算器功能”文章能帮助大...
    99+
    2023-06-30
  • Android studio如何实现简易的计算器功能
    这篇文章主要讲解了“Android studio如何实现简易的计算器功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android studio如何实现简易的计算器功能...
    99+
    2023-06-30
  • android studio怎么实现简单的计算器小功能
    这篇文章主要介绍了android studio怎么实现简单的计算器小功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇android studio怎么实现简单的计算器小功能文章都会有所收获,...
    99+
    2023-06-30
  • C语言运用函数指针数组实现计算器功能
    本文实例为大家分享了C语言运用函数指针数组制作计算器的具体代码,供大家参考,具体内容如下 先来回顾一下概念: 指针数组 —— 存放指针的数组 函数指针 —— 存放函数地址的指针 函数...
    99+
    2024-04-02
  • JavaScript实现计算器的四则运算功能
    目录一、需求 + 最终实现1. 需求2. 说明:利用了字符串(split、replace)和数组(splice)的方法。3. 代码实现二、实现步骤1. 版本一:实现基础加减乘除2. ...
    99+
    2024-04-02
  • C语言函数指针数组实现计算器功能
    目录一、概念        二、用途三、案例:计算器      (1)基础代码编译:(2)使...
    99+
    2024-04-02
  • JavaScript如何实现计算器的四则运算功能
    小编给大家分享一下JavaScript如何实现计算器的四则运算功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、需求 + 最终实现注:只是前端实现1. 需求需...
    99+
    2023-06-29
  • 利用高级Java、算法、三角学、分布计算设计自己的智能机器人 (转)
    利用高级Java、算法、三角学、分布计算设计自己的智能机器人 (转)[@more@]利用高级Java、算法、三角学、分布计算设计自己的智能机器人--(重锤痛击续2)http://www.ibm.com/developerworks/&nbs...
    99+
    2023-06-03
  • chatgpt赋能python:用Python计算三角函数的方法总结
    用Python计算三角函数的方法总结 介绍 三角函数是许多科学和工程领域中常用的数学工具之一。在计算机编程中,Python可以用来计算三角函数,如正弦、余弦和正切等。本篇文章将介绍几种用Python计...
    99+
    2023-10-09
    chatgpt python 开发语言 计算机
  • Android Studio:一个简单的计算器app的实现过程<初级>
    📌Android Studio 专栏正在持续更新中,案例的原理图解析、各种模块分析💖这里都有哦,同时也欢迎大家订阅专栏,获取更多详细信息哦✊✊✊ ✨个人主页:零小唬...
    99+
    2023-10-10
    android studio android java
  • C语言运用回调函数实现计算器
    本文实例为大家分享了C语言运用回调函数实现计算器的具体代码,供大家参考,具体内容如下 回调函数概念: 回调函数是一个通过函数指针调用的函数,也就是将函数的地址作为参数传递给另一个函数...
    99+
    2024-04-02
  • Python装饰器实现函数运行时间的计算
    目录个人理解例子:调用函数的同时对函数进行计时实现方法1:@语法糖代码:实现结果:实现方法2:闭包代码:实现结果:实现方式1和 2的差异总结个人理解 装饰器: 通过闭包和将一个函数作...
    99+
    2024-04-02
  • 利用Android实现一个简单的计算器功能
    今天就跟大家聊聊有关利用Android实现一个简单的计算器功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 安卓计算器Android <wbr>calcula...
    99+
    2023-05-31
    android roi
  • 利用Go语言实现高效的整除运算与余数计算
    利用Go语言实现高效的整除运算与余数计算 在编程中,整除运算和余数计算是常见的操作,特别在处理循环和数学运算时经常会用到。Go语言作为一种高效、简洁的编程语言,提供了丰富的内置函数和运...
    99+
    2024-04-02
  • JavaScript如何实现计算两数的乘积功能
    这篇文章主要讲解了“JavaScript如何实现计算两数的乘积功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript如何实现计算两数的乘积功...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作