Android Studio实现带三角函数对数运算功能的高级计算器
作者:Serendipity_- 发布时间:2022-08-21 05:02:47
标签:Android,Studio,计算器
用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 {
/** Called when the activity is first created. */
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;
}
}
来源:https://blog.csdn.net/qq_44394562/article/details/119960875


猜你喜欢
- Eclipse项目中为什么会有红感叹号,具体分析一下【问题原因】:工程中classpath中指向的包路径错误【解决办法】:右键项目名称 Bu
- 一、C++11智能指针概述在C++中,动态内存的使用时有一定的风险的,因为它没有垃圾回收机制,很容易导致忘记释放内存的问题,具体体现在异常的
- 废话不多说了直接给大家贴代码了,具体代码如下所示:<?xml version="1.0" encoding=&qu
- 一、@Value读取application.properties配置文件中的值application.properties配置文件fileN
- springBoot项目启动多个实例今天碰到一个需求是,将一个服务提供者启动两个实例,一个实例对外,一个实例对内,对内价格有折扣,两个实例通
- spring与IoCIoC:控制反转,将由代码操纵的对象控制权,交给第三方容器,反转给第三方容器。这种对象依赖的关系管理方式,称作IoC。I
- 一 前言这篇文章是很基础的一文,没多大深度,对于开发人员必然是熟练于心。本篇文章的主题是为什么java要设置类成员访问级别?其原因也很简单,
- import java.util.concurrent.Semaphore;public class ThreeThread {
- 由于项目需要在NDK中使用网络开发,对于c语言网络开发来说,libcurl库是个很不错的选择,但android系统中并没有自带该库,所以就得
- 本文实例为大家分享了Android调用手机摄像头拍照和录音功能的具体代码,供大家参考,具体内容如下调用摄像头拍照:public class
- 用法1 为原始类型扩展方法先说一下,this 后面跟的类型,就是要拓展方法的类型。注意要写在静态类中的静态方法,不然有些情况下访问/// &
- 内置的连接池目前spring Boot中默认支持的连接池有dbcp,dbcp2, tomcat, hikari三种连接池。 数据库连接可以使
- 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换
- 在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法:在
- 本文适合有 Java 基础的人群作者:DJL-LankingHelloGitHub 推出的《讲解开源项目》系列。有幸邀请到了亚马逊 + Ap
- 目录猜测可能原因问题排查问题原因总结class Main { public static void main(St
- 在程序开发中,一个程序经常需要去调用其他的程序,C#中Process类正好提供了这样的功能。它提供对本地和远程进程的访问并使您能够启动和停止
- 功能:通过响应UI Textbox 的值向ListView 绑定新添加的纪录。UI XAML 代码<Grid Margin="
- 今天有位同事在使用System.err和System.out遇上了一些小问题.看了些资料总结下:1.JDK文档对两者的解释:out:“标准”
- C#中的很多关键词用法比较容易混淆,var和dynamic就是其中一组,他们都可以申明动态类型的变量,但是本质上他们还是有不少区别的。var