亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

攻城獅第一章最后計算器閃退

按老師代碼,數字+符號,一按delete或者=就閃退,有沒有同樣問題的???

正在回答

4 回答

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"
????}
}


1 回復 有任何疑惑可以回復我~

別換主題也可以解決額

0 回復 有任何疑惑可以回復我~
#1

慕粉0013478382

你說的是什么?是我理解錯了問題的意思?
2017-01-25 回復 有任何疑惑可以回復我~

我按delete不會,但是按=就會,這是代碼的問題,沒有判斷運算符前后是否為運算符或小數點,或者是沒有在點擊運算符的時候檢查是否已經存在運算符以及在最后運算前檢查運算符前后是否只是一個小數點。

1 回復 有任何疑惑可以回復我~
#1

EricZoo 提問者

我后來看到一個人的代碼,關于刪除運算符時判斷是否為空,如果為空則刪除3位,然后delete的閃退解決了,但是等號之后還是會閃退
2017-02-14 回復 有任何疑惑可以回復我~
#2

慕粉0013478382 回復 EricZoo 提問者

時間過太久了,我也不太記得了,你看下我按等號之后執行的getResult()方法吧。這里回復有字數限制,并且不能有那個IDE的背景,所以我在下面回答多一次了。
2017-02-21 回復 有任何疑惑可以回復我~

?= =別用eclipse ?記住Android studio 才是親兒子

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Android攻城獅的第一門課(入門篇)
  • 參與學習       312492    人
  • 解答問題       4931    個

想快速掌握Android應用開發基礎,選擇學習這門課程就對了。

進入課程

攻城獅第一章最后計算器閃退

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號