今天看到书本上的练习题做的一个简单的计算器
其实这个计算器非常的简单,就是有几个需要注意的地方。
因为就是再这些地方话费的时间最长,今天做下记录避免以后再遇到还会茫然。
首先上下代码,到后面会着重讲。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/tvResult" android:layout_width="fill_parent" android:layout_height="wrap_content" android:height="50dp" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:weightSum="1"> <Button android:id="@+id/btnBackspace" android:layout_width="84dp" android:layout_height="wrap_content" android:width="150dp" android:layout_marginLeft="10dp" android:text="删除" /> <Button android:id="@+id/btnCE" android:layout_width="93dp" android:layout_height="wrap_content" android:width="150dp" android:text="清零" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btn7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:width="75dp" android:text="7"/> <Button android:id="@+id/btn8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="8"/> <Button android:id="@+id/btn9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="9"/> <Button android:id="@+id/btnDiv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="/"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btn4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:width="75dp" android:text="4"/> <Button android:id="@+id/btn5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="5"/> <Button android:id="@+id/btn6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="6"/> <Button android:id="@+id/btnMul" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="*"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:width="75dp" android:text="1"/> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="2"/> <Button android:id="@+id/btn3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="3"/> <Button android:id="@+id/btnAdd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="+"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btn0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:width="75dp" android:text="0"/> <Button android:id="@+id/btnC" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="c"/> <Button android:id="@+id/btnEqu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="="/> <Button android:id="@+id/btnSub" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="-"/> </LinearLayout> </LinearLayout>
MainActivity.java
package com.example.liberty.myapplication; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button btn0=null; Button btn1=null; Button btn2=null; Button btn3=null; Button btn4=null; Button btn5=null; Button btn6=null; Button btn7=null; Button btn8=null; Button btn9=null; Button btnBackspace=null; Button btnCE=null; Button btnC=null; Button btnAdd=null; Button btnSub=null; Button btnMul=null; Button btnDiv=null; Button btnEqu=null; TextView tvResult=null; //声明两个参数。接收tvResult前后的值 double num1=0,num2=0; double Result=0;//计算结果 int op=0;//判断操作数, boolean isClickEqu=false;//判断是否按了“=”按钮 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //从布局文件中获取控件, btn0=(Button)findViewById(R.id.btn0); btn1=(Button)findViewById(R.id.btn1); btn2=(Button)findViewById(R.id.btn2); btn3=(Button)findViewById(R.id.btn3); btn4=(Button)findViewById(R.id.btn4); btn5=(Button)findViewById(R.id.btn5); btn6=(Button)findViewById(R.id.btn6); btn7=(Button)findViewById(R.id.btn7); btn8=(Button)findViewById(R.id.btn8); btn9=(Button)findViewById(R.id.btn9); btnBackspace=(Button)findViewById(R.id.btnBackspace); btnCE=(Button)findViewById(R.id.btnCE); btnC=(Button)findViewById(R.id.btnC); btnEqu=(Button)findViewById(R.id.btnEqu); btnAdd=(Button)findViewById(R.id.btnAdd); btnSub=(Button)findViewById(R.id.btnSub); btnMul=(Button)findViewById(R.id.btnMul); btnDiv=(Button)findViewById(R.id.btnDiv); tvResult=(TextView)findViewById(R.id.tvResult); //添加监听\ btnBackspace.setOnClickListener((View.OnClickListener) this); btnCE.setOnClickListener((View.OnClickListener) this); btn0.setOnClickListener((View.OnClickListener) this); btn1.setOnClickListener((View.OnClickListener) this); btn2.setOnClickListener((View.OnClickListener) this); btn3.setOnClickListener((View.OnClickListener) this); btn4.setOnClickListener((View.OnClickListener) this); btn5.setOnClickListener((View.OnClickListener) this); btn6.setOnClickListener((View.OnClickListener) this); btn7.setOnClickListener((View.OnClickListener) this); btn8.setOnClickListener((View.OnClickListener) this); btn9.setOnClickListener((View.OnClickListener) this); btnAdd.setOnClickListener((View.OnClickListener) this); btnSub.setOnClickListener((View.OnClickListener) this); btnMul.setOnClickListener((View.OnClickListener) this); btnDiv.setOnClickListener((View.OnClickListener) this); btnEqu.setOnClickListener((View.OnClickListener) this); } @Override public void onClick(View v) { switch (v.getId()) { //btnBackspace和CE-------------------- case R.id.btnBackspace: String myStr=tvResult.getText().toString(); try { tvResult.setText(myStr.substring(0, myStr.length()-1)); } catch (Exception e) { tvResult.setText(""); } break; case R.id.btnCE: tvResult.setText(null); break; //btn0--9--------------------------- case R.id.btn0: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString=tvResult.getText().toString(); myString+="0"; tvResult.setText(myString); break; case R.id.btn1: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString1=tvResult.getText().toString(); myString1+="1"; tvResult.setText(myString1); break; case R.id.btn2: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString2=tvResult.getText().toString(); myString2+="2"; tvResult.setText(myString2); break; case R.id.btn3: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString3=tvResult.getText().toString(); myString3+="3"; tvResult.setText(myString3); break; case R.id.btn4: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString4=tvResult.getText().toString(); myString4+="4"; tvResult.setText(myString4); break; case R.id.btn5: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString5=tvResult.getText().toString(); myString5+="5"; tvResult.setText(myString5); break; case R.id.btn6: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString6=tvResult.getText().toString(); myString6+="6"; tvResult.setText(myString6); break; case R.id.btn7: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString7=tvResult.getText().toString(); myString7+="7"; tvResult.setText(myString7); break; case R.id.btn8: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString8=tvResult.getText().toString(); myString8+="8"; tvResult.setText(myString8); break; case R.id.btn9: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString9=tvResult.getText().toString(); myString9+="9"; tvResult.setText(myString9); break; //btn+-*/=-------------------------------- case R.id.btnAdd: String myStringAdd=tvResult.getText().toString(); if(myStringAdd.equals(null)) { return; } num1=Double.valueOf(myStringAdd); tvResult.setText(null); op=1; isClickEqu=false; break; case R.id.btnSub: String myStringSub=tvResult.getText().toString(); if(myStringSub.equals(null)) { return; } num1=Double.valueOf(myStringSub); tvResult.setText(null); op=2; isClickEqu=false; break; case R.id.btnMul: String myStringMul=tvResult.getText().toString(); if(myStringMul.equals(null)) { return; } num1=Double.valueOf(myStringMul); tvResult.setText(null); op=3; isClickEqu=false; break; case R.id.btnDiv: String myStringDiv=tvResult.getText().toString(); if(myStringDiv.equals(null)) { return; } num1=Double.valueOf(myStringDiv); tvResult.setText(null); op=4; isClickEqu=false; break; case R.id.btnEqu: String myStringEqu=tvResult.getText().toString(); if(myStringEqu.equals(null)) { return; } num2=Double.valueOf(myStringEqu); tvResult.setText(null); switch (op) { case 0: Result=num2; break; case 1: Result=num1+num2; break; case 2: Result=num1-num2; break; case 3: Result=num1*num2; break; case 4: Result=num1/num2; break; default: Result=0; break; } tvResult.setText(String.valueOf(Result)); isClickEqu=true; break; default: break; } } }
其实写下来发现没用到很多的东西,开始写的时候出了点问题。就是布局的地方要注意LinearLayout的用法,
这个地几次都错了,,谨记谨记。java的代码主要就是监听所以也不难 ,就是一直敲。其余的就是修复bug了。
还有就是这个计算器写的不完善,有些地方的问题我还解决不了,再后面我会尽自己的努力慢慢修复。


浙公网安备 33010602011771号