Android计算器的运算符闪退,攻城狮第一章最后计算器闪退

private void getResult(){

String exp=et.getText().toString();

if(exp==null||exp.equals("")){

return;

}

if(!exp.contains(" ")){

return;

}

double result=0;

String s1=exp.substring(0,exp.indexOf(" "));

String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);

String s2= exp.substring(exp.indexOf(" ")+3);

if(s1.equals(".")||s2.equals(".")){

et.setText("出错");

}else if(!s1.equals("")&&!s2.equals("")){

double d1=Double.parseDouble(s1);

double d2=Double.parseDouble(s2);

switch (op){

case "*":

result=d1*d2;

break;

case "-":

result=d1-d2;

break;

case "/":

if(d2==0){

result=0;

}else{

result=d1/d2;

}

break;

case "+":

result=d1+d2;

break;

}

if(!s1.contains(".")&&!s2.contains(".")&&!op.equals("/")){

int r=(int)result;

et.setText(r+"");

}else if(op.equals("/")){ //即使s1和s2含有小数点,但是相除的结果可能是整数,需要再判断

int r=(int)result;

if(result-r!=0)

et.setText(result+"");

else

et.setText(r+"");//即使s1和s2含有小数点,如果两数相除的结果为整数,则输出int型的结果

}else{

et.setText(result+"");

}

}else if(!s1.equals("")&&s2.equals("")){

et.setText(s1+"");//s1不为空,s2为空时,按等号时,直接输出s1.如:输入:"3+",然后就按等号了,则直接输出"3"

}else if(s1.equals("")&&!s2.equals("")){

et.setText("0");//s1为空,s2不为空,这输出"0"

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值