Activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="#00ffff" tools:context=".MainActivity">//整体布局 <EditText android:layout_width="fill_parent" android:layout_height="90dip" android:id="@+id/et_input" android:gravity="right|bottom" android:background="#ffffff" android:layout_centerHorizontal="true" android:layout_alignParentTop="true" />//文本框布局 <LinearLayout android:layout_marginTop="10dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal" android:layout_below="@+id/et_input" android:layout_alignParentLeft="true" android:weightSum="1"> <Button android:layout_width="60dp" android:layout_height="74dp" android:text="ON" android:textSize="40sp" android:background="#bebebe" android:id="@+id/btn_clear" android:layout_weight="0.54" /> <Button android:layout_width="60dp" android:background="#bebebe" android:layout_height="74dp" android:text="OFF" android:textSize="40sp" android:id="@+id/btn_del" android:layout_weight="0.46" />//关机按钮 <Button android:layout_width="59dp" android:background="#bebebe" android:layout_height="74dp" android:text="/" android:textSize="40sp" android:id="@+id/btn_divide" /> <Button android:layout_width="59dp" android:layout_height="74dp" android:text="*" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_multiply" /> </LinearLayout> //第二行开始******************************* <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="80dp" android:orientation="horizontal" android:layout_below="@+id/et_input" android:layout_alignParentLeft="true" android:weightSum="1"> <Button android:layout_width="60dp" android:layout_height="74dp" android:text="7" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_7" android:layout_weight="0.54" /> <Button android:layout_width="60dp" android:layout_height="74dp" android:text="8" android:textSize="40sp" android:background="#bebebe" android:id="@+id/btn_8" android:layout_weight="0.46" /> <Button android:layout_width="59dp" android:layout_height="74dp" android:text="9" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_9" /> <Button android:layout_width="59dp" android:layout_height="74dp" android:text="-" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_-" /> </LinearLayout> //第三行开始******************************** <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="150dp" android:orientation="horizontal" android:layout_below="@+id/et_input" android:layout_alignParentLeft="true" android:weightSum="1"> <Button android:layout_width="60dp" android:layout_height="74dp" android:text="4" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_4" android:layout_weight="0.54" /> <Button android:layout_width="60dp" android:layout_height="74dp" android:text="5" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_5" android:layout_weight="0.46" /> <Button android:layout_width="59dp" android:layout_height="74dp" android:text="6" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_6" /> <Button android:layout_width="59dp" android:layout_height="74dp" android:text="+" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_plus" /> </LinearLayout> //第四行*************************************************************** <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="220dp" android:orientation="horizontal" android:layout_below="@+id/et_input" android:layout_alignParentLeft="true" android:weightSum="1"> <Button android:layout_width="60dp" android:layout_height="74dp" android:text="1" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_1" android:layout_weight="0.54" /> <Button android:layout_width="60dp" android:layout_height="74dp" android:text="2" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_2" android:layout_weight="0.46" /> <Button android:layout_width="59dp" android:layout_height="74dp" android:text="3" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_3" /> <Button android:layout_width="59dp" android:layout_height="74dp" android:text="0" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_0" android:layout_weight="0.32" /> /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="300dp" android:orientation="horizontal" android:layout_below="@+id/et_input" android:layout_alignParentLeft="true" android:weightSum="1"> <Button android:layout_width="60dp" android:layout_height="74dp" android:text="." android:background="#bebebe" android:textSize="60sp" android:id="@+id/btn_point" android:layout_weight="0.54" /> <Button android:layout_width="59dp" android:layout_height="74dp" android:text="+/-" android:background="#bebebe" android:textSize="40sp" android:id="@+id/minus" android:layout_weight="0.11" /> /> <Button android:layout_width="59dp" android:layout_height="74dp" android:text="%" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_minus" android:layout_weight="0.11" /> /> <Button android:layout_width="59dp" android:layout_height="74dp" android:text="=" android:background="#bebebe" android:textSize="40sp" android:id="@+id/btn_equal" android:layout_weight="0.24" /> </LinearLayout> </RelativeLayout>
MainActivity.java
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button btn_0 ; Button btn_1; Button btn_2; Button btn_3 ; Button btn_4 ; Button btn_5 ; Button btn_6 ; //数字按钮 Button btn_7 ; Button btn_8 ; Button btn_9 ;//数字按钮 Button btn_point ; //小数点按钮 Button btn_clear ; Button btn_del ; Button btn_pluse ; Button btn_minus ; Button btn_multiply ; Button btn_divide ; Button btn_equle ; EditText et_input ; boolean clear_flag ;//清空标识 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_0 = (Button) findViewById(R.id.btn_0) ; btn_1 = (Button) findViewById(R.id.btn_1) ; btn_2 = (Button) findViewById(R.id.btn_2) ; btn_3 = (Button) findViewById(R.id.btn_3) ; btn_4 = (Button) findViewById(R.id.btn_4) ; btn_5 = (Button) findViewById(R.id.btn_5) ; btn_6 = (Button) findViewById(R.id.btn_6) ; btn_7 = (Button) findViewById(R.id.btn_7) ; btn_8 = (Button) findViewById(R.id.btn_8) ; btn_9 = (Button) findViewById(R.id.btn_9) ; btn_point = (Button) findViewById(R.id.btn_point) ; btn_clear = (Button) findViewById(R.id.btn_clear) ; btn_del = (Button) findViewById(R.id.btn_del) ; btn_pluse = (Button) findViewById(R.id.btn_plus) ; btn_minus = (Button) findViewById(R.id.btn_minus) ; btn_multiply = (Button) findViewById(R.id.btn_multiply) ; btn_divide = (Button) findViewById(R.id.btn_divide) ; btn_equle = (Button) findViewById(R.id.btn_equal) ; //以上实例化按钮,初始化按钮 et_input = (EditText) findViewById(R.id.et_input); //实例化之后的显示屏 btn_0.setOnClickListener(this); btn_1.setOnClickListener(this); btn_2.setOnClickListener(this); btn_3.setOnClickListener(this); btn_4.setOnClickListener(this); btn_5.setOnClickListener(this); btn_6.setOnClickListener(this); btn_7.setOnClickListener(this); btn_8.setOnClickListener(this); btn_9.setOnClickListener(this); btn_point.setOnClickListener(this); btn_clear.setOnClickListener(this); btn_del.setOnClickListener(this); btn_pluse.setOnClickListener(this); btn_minus.setOnClickListener(this); btn_multiply.setOnClickListener(this); btn_divide.setOnClickListener(this); btn_equle.setOnClickListener(this); //设置以上按钮的点击事件 } @Override public void onClick(View v) {//设置监控 String str = et_input.getText().toString(); switch (v.getId()) { case R.id.btn_0: case R.id.btn_1: case R.id.btn_2: case R.id.btn_3: case R.id.btn_4: case R.id.btn_5: case R.id.btn_6: case R.id.btn_7: case R.id.btn_8: case R.id.btn_9: case R.id.btn_point: if (clear_flag) { clear_flag =false ; str ="" ; et_input.setText(""); } et_input.setText(str + ((Button)v).getText()); break ; case R.id.btn_plus: case R.id.btn_minus: case R.id.btn_multiply: case R.id.btn_divide: if (clear_flag) { clear_flag =false ; str ="" ; et_input.setText(""); } et_input.setText(str+ " " + ((Button)v).getText()+" "); break; case R.id.btn_del: if (clear_flag) { clear_flag =false ; str ="" ; et_input.setText(""); }else if (str!=null&&!str.equals("")){ et_input.setText(str.substring(0,str.length()-1)); } break; case R.id.btn_clear: clear_flag =false ; str ="" ; et_input.setText(""); case R.id.btn_equal: getResult(); break ; } } /* 单独的调用运算结果 * * * */ private void getResult(){ String exp = et_input.getText().toString(); if (exp == null||exp.equals("")){ return; } if(!exp.contains(" ")) { return; } if (clear_flag){ clear_flag = false ; return; } clear_flag = true ; 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(" ")){ double d1 = Double.parseDouble(s1) ; double d2 = Double.parseDouble(s2) ; if (op.equals("+")){ result = d1 + d2 ; }else if (op.equals("-")){ result = d1 - d2 ; }else if (op.equals("*")){ result = d1 * d2 ; }else if (op.equals("/")){ if(d2 == 0){ result = 0 ; }else { result = d1/d2 ; } } if (s1.contains(".")&&s2.contains(".")) { int r = (int) result; et_input.setText(r+""); }else { et_input.setText(result+""); } }else if (!s1.equals("")&&s2.equals("")){ et_input.setText(exp); }else if (s1.equals("")&&!s2.equals("")){ double d2 = Double.parseDouble(s2) ; if (op.equals("+")){ result = 0 + d2 ; }else if (op.equals("-")){ result = 0 - d2 ; }else if (op.equals("*")){ result = 0 ; }else if (op.equals("/")){ result = 0 ; } if (s2.contains(".")) { int r = (int) result; et_input.setText(r+""); }else { et_input.setText(result+""); } }else { et_input.setText(""); } } }