課程
/移動開發
/Android
/Android攻城獅的第一門課(入門篇)
按老師代碼,數字+符號,一按delete或者=就閃退,有沒有同樣問題的???
2017-01-25
源自:Android攻城獅的第一門課(入門篇) 21-6
正在回答
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" ????} }
別換主題也可以解決額
慕粉0013478382
我按delete不會,但是按=就會,這是代碼的問題,沒有判斷運算符前后是否為運算符或小數點,或者是沒有在點擊運算符的時候檢查是否已經存在運算符以及在最后運算前檢查運算符前后是否只是一個小數點。
EricZoo 提問者
慕粉0013478382 回復 EricZoo 提問者
?= =別用eclipse ?記住Android studio 才是親兒子
舉報
想快速掌握Android應用開發基礎,選擇學習這門課程就對了。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-02-21
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" ????} }2017-01-25
別換主題也可以解決額
2017-01-25
我按delete不會,但是按=就會,這是代碼的問題,沒有判斷運算符前后是否為運算符或小數點,或者是沒有在點擊運算符的時候檢查是否已經存在運算符以及在最后運算前檢查運算符前后是否只是一個小數點。
2017-01-25
?= =別用eclipse ?記住Android studio 才是親兒子