我写了个计算器的程序能跑但一按=号就奔溃,经过测试确定是=号算法问题;请各位大神帮忙看看
private void getResult() {
String exp = et_input.getText().toString();
if (exp == null || exp.equals("")) {
return;
}
if (!exp.contains("")) {
return;
}
if (clear_flag) {
clear_flag = false;//清空 上面有定义
return;
}
clear_flag = true;
double result = 0;
String s1 = exp.substring(0, exp.indexOf("+"));//运算符前面的字符串
String s2 = exp.substring(0, exp.indexOf("-"));
String s3 = exp.substring(0, exp.indexOf("*"));
String s4 = exp.substring(0, exp.indexOf("/"));
String op1 = exp.substring(exp.indexOf("+") , exp.indexOf("+") + 1);
String op2 = exp.substring(exp.indexOf("-") , exp.indexOf("-") + 1);
String op3 = exp.substring(exp.indexOf("*") , exp.indexOf("*") + 1);
String op4 = exp.substring(exp.indexOf("/") , exp.indexOf("/") + 1);
String t1 = exp.substring(exp.indexOf("+") + 2);//运算符后的字符串
String t2 = exp.substring(exp.indexOf("-") + 2);//运算符后的字符串
String t3 = exp.substring(exp.indexOf("*") + 2);//运算符后的字符串
String t4 = exp.substring(exp.indexOf("/") + 2);//运算符后的字符串
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(t1);
double d3 = Double.parseDouble(s2);
double d4 = Double.parseDouble(t2);
double d5 = Double.parseDouble(s3);
double d6 = Double.parseDouble(t3);
double d7 = Double.parseDouble(s4);
double d8 = Double.parseDouble(t4);
if (!s1.equals("") && !t1.equals("")) {//计算+
result = d1 + d2;
}
if (!s2.equals("") && !t2.equals("")) {//计算-
result = d3 - d4;
}
if (!s3.equals("") && !t3.equals("")) {//计算*
result = d5 * d6;
}
if (!s4.equals("") && !t4.equals("")) {//计算/
if (d2 == 0) {
result = 0;
} else {
result = d7 / d8;
}
}
else if (!s1.equals("")&&s2.equals("")){
et_input.setText(exp);
}else if (s1.equals("")&&!s2.equals("")){//如果符号前或符号后为空
if (op1.equals("+")) {
result = 0 + d1;
} else if (op2.equals("-")) {
result = 0 - d3;
} else if (op3.equals("*")) {
result = 0 ;
} else if (op4.equals("/")) {
result =0;
} if ( !s2.contains(".")) {
int r = (int) result;
et_input.setText(r + "");
} else {
et_input.setText(result + "");
}
}else{
et_input.setText("");
}
}
}