大神求救?。?! 為什么一點擊“等于”就報錯
?FATAL EXCEPTION: main java.lang.StringIndexOutOfBoundsException: length=5; regionStart=2; regionLength=-3 at cn.lll.MainActivity.getResult(MainActivity.java:162) at cn.ll.MainActivity.onClick(MainActivity.java:140)
我的代碼如下:
case R.id.btn_equal:
?? ??? ??? ?getResult();
?? ??? ??? ?break;
?? ??? ?}
?? ?}
//獲取計算結果,調用getresult方法
?? ?private void getResult() {
?? ??? ?String exp=et_showview.getText().toString();
?? ??? ?//空或者沒有東西,直接返回
?? ??? ?if (exp==null||exp.equals("") ) {
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?if (!exp.contains(" ")) {
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?if (clear_flag) {
?? ??? ??? ?clear_flag=false;
?? ??? ??? ?return;?? ??? ?
?? ??? ?}
?? ??? ?clear_flag=true;
?? ??? ?double r=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("")) {
?? ??? ??? ?double arg1=Double.parseDouble(s1);
?? ??? ??? ?double arg2=Double.parseDouble(s2);
?? ??? ??? ?if(op.equals("+")){
?? ??? ?????? ??? ? r= arg1+arg2;
?? ??? ??????? }else if(op.equals("-")){
?? ??? ?????? ??? ?r= arg1-arg2;
?? ??? ??????? }else if(op.equals("×")){
?? ??? ?????? ??? ? r= arg1*arg2;
?? ??? ??????? }else if(op.equals("÷")){ ?
?? ??? ??? ??? ??? if (arg2==0) {
?? ??? ??? ??? ??? ?r=0;
?? ??? ??? ??? ?}else {
?? ??? ??? ??? ??? ?r=arg1/arg2;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?et_showview.setText(String.valueOf(r));
2017-10-25
String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" "+2));
String s2=exp.substring(exp.indexOf(" "+3));
這兩行應該是
String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);
String s2=exp.substring(exp.indexOf(" ")+3);
2018-10-23
牛皮,怪不得老是找不到問題所在