纠纷奇闻作文社交美文家庭
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

每日一练之模拟计算器逻辑部分

3月11日 栀璃鸢投稿
  今天跟着bilibili的教程,参考了网上的一些资料,实现了计算器app的基本逻辑部分,实际上需要细化的还用很多,但只是个练习,就不抠细节部分了,只是熟悉掌握按键互动的一些基本命令。
  packagecom。example。importandroid。graphics。drawable。Dimportandroid。os。Bimportandroid。util。Limportandroid。view。Vimportandroid。widget。Bimportandroid。widget。TextVimportandroidx。appcompat。app。AppCompatAimportjava。util。LinkedLimportjava。util。SpublicclassCalculatorActivityextendsAppCompatActivity{privateButtonbtn0;privateButtonbtn1;privateBprivateButtonbtn2;privateButtonbtn3;privateButtonbtn4;privateButtonbtn5;privateButtonbtn6;privateButtonbtn7;privateButtonbtn8;privateButtonbtn9;privateBprivateBprivateBprivateBprivateBprivateBprivateBprivateB清除一个数字privateBprivateTextV算数表达式privateTextV计算结果判断是否是新的计算开始OverrideprotectedvoidonCreate(BundlesavedInstanceState){super。onCreate(savedInstanceState);setContentView(R。layout。activitycalculator);控制button上图标大小btnsqrtfindViewById(R。id。sqrt);Drawabledrawable1getResources()。getDrawable(R。drawable。kaifang);drawable1。setBounds(20,20,100,100);第一0是距左边距离,第二0是距上边距离,40分别是长宽btnsqrt。setCompoundDrawables(drawable1,null,null,null);只放左边计算结果tvresultfindViewById(R。id。resulttext);tvnumcalculatefindViewById(R。id。numcalculate);每个按钮注册监听btn0findViewById(R。id。zero);btn1findViewById(R。id。one);btn2findViewById(R。id。two);btn3findViewById(R。id。three);btn4findViewById(R。id。four);btn5findViewById(R。id。five);btn6findViewById(R。id。six);btn7findViewById(R。id。seven);btn8findViewById(R。id。eight);btn9findViewById(R。id。nine);btnpointfindViewById(R。id。point);btnplusfindViewById(R。id。plus);btnminusfindViewById(R。id。minus);btnmultiplyfindViewById(R。id。multiply);btnpidefindViewById(R。id。pide);btndelfindViewById(R。id。del);倒数btnequalfindViewById(R。id。equal);等于btncefindViewById(R。id。CEbtn);回退btnclearfindViewById(R。id。clear);清除btn0。setOnClickListener(ClickFn);btn1。setOnClickListener(ClickFn);btn2。setOnClickListener(ClickFn);btn3。setOnClickListener(ClickFn);btn4。setOnClickListener(ClickFn);btn5。setOnClickListener(ClickFn);btn6。setOnClickListener(ClickFn);btn7。setOnClickListener(ClickFn);btn8。setOnClickListener(ClickFn);btn9。setOnClickListener(ClickFn);btnpoint。setOnClickListener(ClickFn);btnplus。setOnClickListener(ClickFn);btnminus。setOnClickListener(ClickFn);btnmultiply。setOnClickListener(ClickFn);btnpide。setOnClickListener(ClickFn);btnsqrt。setOnClickListener(ClickFn);btndel。setOnClickListener(ClickFn);btnequal。setOnClickListener(ClickFn);btnce。setOnClickListener(ClickFn);btnclear。setOnClickListener(ClickFn);}privateView。OnClickListenerClickFnnewView。OnClickListener(){privatestaticfinalStringTAGCalculatorAOverridepublicvoidonClick(Viewview){Stringinputtexttvnumcalculate。getText()。toString();if(isnewcalculateview。getId()!R。id。equal){tvresult。setText(0);tvnumcalculate。setText(inputtext);}tvresult。setTextSize(30);switch(view。getId()){caseR。id。zero:caseR。id。one:caseR。id。two:caseR。id。three:caseR。id。four:caseR。id。five:caseR。id。six:caseR。id。seven:caseR。id。eight:caseR。id。nine:inputtextinputtext((Button)view)。getText()。toString();tvnumcalculate。setText(inputtext);caseR。id。sqrt:;caseR。id。point:caseR。id。plus:caseR。id。minus:caseR。id。multiply:caseR。id。pide:不允许连续输入多个运算符if(inputtext!null!inputtext。equals()){charcinputtext。charAt(inputtext。length()1);if((byte)c41(byte)c48c。equals()){acsii的4247为,。Stringcinputtext。substring(inputtext。length()1);if(c。equals()c。equals()c。equals()c。equals()c。equals(。)c。equals()){判断如果两次按的都是运算符,取最后一个运算符tvnumcalculate。setText(inputtext。substring(0,inputtext。length()1)((Button)view)。getText());}else{判断如果第两次按不是运算符,直接按字符串累加tvnumcalculate。setText(inputtext((Button)view)。getText());}}caseR。id。del:if(inputtext!null!inputtext。equals()){inputtextinputtext。substring(0,inputtext。length()1);tvnumcalculate。setText(inputtext);}caseR。id。CEbtn:第一次ac清空calculate,第二次清空resultif(inputtext。equals()){calculate为空则清空计算结果tvresult。setText(0);}tvnumcalculate。setText(inputtext);caseR。id。clear:tvresult。setText(0);tvnumcalculate。setText(inputtext);caseR。id。equal:按时进行,tvnumcalculate为结果值tvresult。setTextSize(40);if(inputtextnullinputtext。equals()){tvresult。setText(0);}else{tvresult。setText(inputtext);每输入一次数字后就进行计算tvresult。setText(getResult(inputtext));}default:}Log。d(TAG,onClick:inputtext);}privateStringgetResult(Stringinputtext){if(inputtextnullinputtext。equals()){}如果不为空,先判断末尾是否是符号,如果是符号,就去掉Stringcinputtext。substring(inputtext。length()1);if(c。equals()c。equals()c。equals()c。equals()c。equals(。)c。equals()){inputtextinputtext。substring(0,inputtext。length()1);}doublereturnnum0;returnnumcalculator(inputtext);如果小数位为0输出整形intSif(returnnum10){returnstringString。valueOf((int)returnnum);}else{returnstringString。valueOf(returnnum);}}运算,将数字类型改为double并在其中加入小数的运算privatedoublecalculator(Stringinputtext){一、把表达式分解成运算符和数字StackStringstkElesnewStackString();LinkedListStringtempBackcalnewLinkedListString();for(inti0;iinputtext。length();i){1。遇到了数字if(Character。isDigit(inputtext。charAt(i))){注意多位数的获取intki1;小数点也加入数字中for(;kinputtext。length()(Character。isDigit(inputtext。charAt(k))inputtext。charAt(k)。);k){}tempBackcal。add(inputtext。substring(i,k));ik1;更新}2。遇到了乘除运算符if(inputtext。charAt(i)inputtext。charAt(i)){if(inputtext。charAt(i)inputtext。charAt(i)){while(!stkEles。isEmpty()(stkEles。lastElement()。equals()stkEles。lastElement()。equals())){tempBackcal。add(stkEles。pop());弹出优先级相同或以上的栈内运算符}stkEles。add(String。valueOf(inputtext。charAt(i)));运算符入栈}3。遇到了加减运算符if(inputtext。charAt(i)inputtext。charAt(i)){while(!stkEles。isEmpty()!isNumeric(stkEles。lastElement())){tempBackcal。add(stkEles。pop());弹出优先级相同或以上的栈内运算符}stkEles。add(String。valueOf(inputtext。charAt(i)));运算符入栈}}4。最后弹出栈内所有元素到表达式while(stkEles。size()0){tempBackcal。add(stkEles。pop());}二、把分解的运算符和数字进行计算StackDoublecalStknewStackDouble();for(Stringc:tempBackcal){1。数字,入栈if(isNumeric(c)){calStk。push(Double。valueOf(c));}2。非数字,则为符号,出栈两个元素计算出结果然后再入栈该计算值else{DoubleacalStk。pop();DoublebcalStk。pop();switch(c。toCharArray()〔0〕){注意减法和除法时,注意出栈的顺序与原表达式是相反的case:calStk。push(ba);case:calStk。push(ba);case:calStk。push(ba);case:calStk。push(ba);}}}returncalStk。pop();}privatebooleanisNumeric(Stringstr){for(inti0;istr。length();i){是否为数字或者小数点if(!Character。isDigit(str。charAt(i))str。charAt(i)!。){}}};};}
搜索 投诉 评论 转载

江苏宿迁2023年十大富豪,刘强东身价缩水300亿,两位80华东净土,霸王故里宿迁市位于江苏省北部,地处长三角北翼,是江苏沿海向中西部辐射的重要门户城市,同时也是徐州都市圈和江淮生态经济区的重要组成部分。宿迁历史悠久,建城至今已有270……小音箱大心意,敦煌九色鹿走出壁画,SanagXp6蓝牙音箱国没有音乐,生命是没有价值的。尼采你这个疯子!说得还真有道理!音乐如此重要,为我们传递音乐的工具也突然间变得有那么一点点神圣起来了。如果你不同意,那是因为……一个人抱不住的参天樱花树,这里藏着十几棵长江日报大武汉客户端3月16日讯20多米高、成年人都无法环抱的樱花树会是什么样的景象?武汉市东湖听涛景区碧潭观鱼锦鲤池东面的小山坡上,就藏着近20棵这样的樱花树。3月15日,长……闫妮穿低领装亮相,穿衣搭配惹争议,网友一双鞋子毁了整个造型在我的印象中,闫妮是一位很懂时尚的女明星,虽然她是一位70后女明星,但是她出席活动总是很洋气,无论是穿衣搭配,还是言行举止,给人的感觉都不像是70后,不过,闫妮凹造型也有翻车的……熊孩子挑食,聪明父母这样做,看看有你吗下班时,在小区里碰到豆豆妈妈,闲聊中,得知豆豆吃饭经常挑食,整个人瘦的像根小竹竿。豆豆今年3岁,爸爸妈妈工作忙,平日都是奶奶照顾,每逢吃饭,家里就上演家庭版三国,孩子满地跑,奶……田小洁其貌不扬干过修车工,离过婚却娶到江珊,他到底有何魅力快看,这么老了还来上学!几个青春年华的同学窃窃私语,眼角一直瞄着系里最特殊的学生。对于十八九岁的年轻人来说,而立之年的30岁是那样的遥远。29岁才走进大学校园……研究发现保护和恢复野生动物的行动可以带来新的气候解决方案一项新的研究表明,通过保护和恢复野生动物,我们可以加强自然碳捕获机制,减少气候变化。通过保护和加强陆地和水生生态系统中的碳捕获,引入应对气候变化的自然解决方案具有保护动物物种的……Star量近8万,大火AutoGPT星标超PyTorch,网机器之心报道机器之心编辑部英伟达AI科学家JimFan表示,AutoGPT只是一项有趣的实验,虽然火爆但并不意味着可以投入生产。他的观点得到了很多人的附和和现身说法……至少100个UFO曾包围美军舰?数十名美军异口同声,性能远超宇宙中到底是否存在外星文明,UFO又是否曾经到访过地球?这些问题一直困扰着人类,从概率上来说,宇宙中一定存在外星文明,只不过还未发现,至于UFO,已经有很多人扬言曾看到其到访地……央视主持刘芳菲罕晒花滑装,穿粉色挂肩裙,侧脸五官线条似女明星女性裙装很丰富,但是想把造型穿出高级感出来,一定要选对款式,尤其是面对大型活动的时候,什么样的场合就应该选择什么样的裙装,避免出现格格不入的画面,像礼服裙这些单品就应该出现在比……每日一练之模拟计算器逻辑部分今天跟着bilibili的教程,参考了网上的一些资料,实现了计算器app的基本逻辑部分,实际上需要细化的还用很多,但只是个练习,就不抠细节部分了,只是熟悉掌握按键互动的一些基本……平安银行亮底牌对公房地产贷款余额2980亿记者李惠琳编辑谭璐8月17日,平安银行(000001)发布2022年半年度业绩报告,营收920。22亿元,同比增长8。7,净利润220。88亿元,同比增长25。6。……
老人走路多,死亡风险低老人爱吃的此种食物,消除老年斑促进消化,早知早受益谁给的勇气?名嘴杨毅预测辽篮30横扫广东,或步苏群后尘遭打脸人狠话不多!王曼昱直播捅破窗户纸,刺痛了陈梦,也惊醒了孙颖莎21的室温超导真的要来了?怀旧周报国服玩家错过12年的史诗活动,终于在魔兽怀旧服重启鸡蛋鸭蛋鹅蛋鹌鹑蛋,哪种营养更高?提醒尽量少吃这3蛋央行下调准备金率,究竟目的何在,对股市影响几何郝蕾胖一点更美了,穿绿色吊带裙性感妩媚,越老越有女人味心脏不好的人是需要休息还是需要锻炼?做了心脏搭桥手术能活多久?需要注意什么?如果医生给你动手术的时候发现其它毛病,他会给你顺便治好了吗?
教你直接清除微信缓存轻松解决内存不足!以感恩为话题的初中作文400字热博聚热点网 做老妈的痛苦!曹冲称象教学反思农广天地视频(农广天地喷灌滴灌节水灌溉技术)12岁乳房超大正常吗?12岁女孩乳房很大怎么变小?我最敬佩的一个人小学一年级作文2001年上海高考满分作文文化遗产民族的魂棉被芯怎么洗不同种类的棉被芯不同的洗法格局生变!多家外资车型挥别中国市场,中外车企未来如何相处?天天跑步能汗蒸吗满分作文赏析喷泉与水

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形