本文实例为大家分享了android studio实现简单计算器的具体代码,供大家参考,具体内容如下
话不多说,首先附上代码:
mainactivity.java
package com.example.calculator; import androidx.appcompat.app.appcompatactivity; import android.os.bundle; import android.view.view; import android.widget.edittext; import java.util.stack; public class mainactivity extends appcompatactivity { edittext edit = null; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); edit = findviewbyid(r.id.edit_textview); } public void btnclick(view view) { switch (view.getid()){ case r.id.btn0: edit.append("0"); break; case r.id.btn1: edit.append("1"); break; case r.id.btn2: edit.append("2"); break; case r.id.btn3: edit.append("3"); break; case r.id.btn4: edit.append("4"); break; case r.id.btn5: edit.append("5"); break; case r.id.btn6: edit.append("6"); break; case r.id.btn7: edit.append("7"); break; case r.id.btn8: edit.append("8"); break; case r.id.btn9: edit.append("9"); break; case r.id.btnplus: edit.append("+"); break; case r.id.btnsubtract: edit.append("-"); break; case r.id.btnmultiply: edit.append("*"); break; case r.id.btndivide: edit.append("/"); break; } } public void btnequal(view view) { string str = edit.gettext().tostring();//1+2 string res=""; //java计算代码 string result = calculate(str); edit.settext(result); } private static int number(char[] arr,int start,int end){ stringbuilder buffer = new stringbuilder(); for(int i=start;i<=end;i++){ buffer.append(arr[i]); } return integer.parseint(buffer.tostring()); } // 待实现函数,在此函数中填入答题代码 private static int comp(string op){ if(op.equals("+") || op.equals("-")) return 1; if(op.equals("*") || op.equals("/")) return 2; return 0; } private static string compute(integer a,integer b,string op){ integer res; if(op.equals("+")) { res = a + b; return res.tostring(); } if (op.equals("-")) { res= a - b; return res.tostring(); } if (op.equals("*")) { res = a * b; return res.tostring(); } if (op.equals("/") && b!=0) { res= a / b; return res.tostring(); }else{ return "error"; } } private static string calculate(string source) { stack<integer> numbers=new stack<>(); stack<string> operator=new stack<>(); operator.push("."); char[] exps=source.tochararray(); int start=0; if(exps[0]=='-') numbers.push(0); for(int j=0;j<exps.length;j++){ if(exps[j]=='+' || exps[j]=='*' || exps[j]=='/' || exps[j]=='-'){ if (start <= j - 1) { numbers.push(number(exps,start,j-1)); } start=j+1; while (comp(operator.peek())>=comp(string.valueof(exps[j]))){ integer two=numbers.peek();numbers.pop(); integer one=numbers.peek();numbers.pop(); string result=compute(one,two,operator.peek());operator.pop(); if (result.equals("error")) { return result; } numbers.push(integer.parseint(result)); } operator.push(string.valueof(exps[j])); } } numbers.push(number(exps,start,exps.length-1)); while (operator.size()>1){ integer two=numbers.peek();numbers.pop(); integer one =numbers.peek();numbers.pop(); string op=operator.peek();operator.pop(); string value = compute(one, two, op); if (value.equals("error")) { return value; } numbers.push(integer.parseint(value)); } return numbers.peek().tostring(); } public void btnclear(view view) { edit.settext(""); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".mainactivity"> <edittext android:id="@+id/edit_textview" android:layout_width="match_parent" android:layout_height="wrap_content"/> <tablelayout android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchcolumns="0,1,2,3"> <tablerow> <button android:id="@+id/btn7" android:layout_height="match_parent" android:onclick="btnclick" android:text="7" /> <button android:id="@+id/btn8" android:text="8" android:onclick="btnclick"/> <button android:id="@+id/btn9" android:text="9" android:onclick="btnclick"/> <button android:id="@+id/btndivide" android:text="÷" android:onclick="btnclick"/> </tablerow> <tablerow> <button android:id="@+id/btn4" android:text="4" android:onclick="btnclick"/> <button android:id="@+id/btn5" android:text="5" android:onclick="btnclick"/> <button android:id="@+id/btn6" android:text="6" android:onclick="btnclick"/> <button android:id="@+id/btnmultiply" android:text="×" android:onclick="btnclick"/> </tablerow> <tablerow> <button android:id="@+id/btn1" android:text="1" android:onclick="btnclick"/> <button android:id="@+id/btn2" android:text="2" android:onclick="btnclick"/> <button android:id="@+id/btn3" android:text="3" android:onclick="btnclick"/> <button android:id="@+id/btnsubtract" android:text="-" android:onclick="btnclick"/> </tablerow> <tablerow> <button android:id="@+id/btnclear" android:text="c" android:onclick="btnclear"/> <button android:id="@+id/btn0" android:text="0" android:onclick="btnclick"/> <button android:id="@+id/btnequal" android:text="=" android:onclick="btnequal"/> <button android:id="@+id/btnplus" android:text="+" android:onclick="btnclick"/> </tablerow> </tablelayout> </linearlayout>
计算器界面:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。