Android 从小白到大拿之路——简单计算器最终的实现

来源:互联网 发布:java中定义数组的方法 编辑:程序博客网 时间:2024/04/27 17:41

直接上代码,虽然存在很多问题,但我相信我后面是能够回头fix的:

MainActivity.java

package com.example.calculator;import java.util.ArrayList;import java.util.List;import com.example.calculator.Item;import com.example.calculator.Types;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener{//pre, 声明!private TextView tvScreen;private List<Item> items = new ArrayList<Item>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                //第一步,显示屏的声明并绑定        tvScreen = (TextView) findViewById(R.id.tvScreen);                //第二步绑定设置好的每个按键        findViewById(R.id.btnNum0).setOnClickListener(this);        findViewById(R.id.btnNum1).setOnClickListener(this);        findViewById(R.id.btnNum2).setOnClickListener(this);        findViewById(R.id.btnNum3).setOnClickListener(this);        findViewById(R.id.btnNum4).setOnClickListener(this);        findViewById(R.id.btnNum5).setOnClickListener(this);        findViewById(R.id.btnNum6).setOnClickListener(this);        findViewById(R.id.btnNum7).setOnClickListener(this);        findViewById(R.id.btnNum8).setOnClickListener(this);        findViewById(R.id.btnNum9).setOnClickListener(this);        findViewById(R.id.btnClear).setOnClickListener(this);        findViewById(R.id.btnDelete).setOnClickListener(this);        findViewById(R.id.btnPlus).setOnClickListener(this);        findViewById(R.id.btnSub).setOnClickListener(this);        findViewById(R.id.btnMultiply).setOnClickListener(this);        findViewById(R.id.btnDivide).setOnClickListener(this);        findViewById(R.id.btnResult).setOnClickListener(this);        findViewById(R.id.btnPoint).setOnClickListener(this);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }    //第三步,在onClick中设置按钮按下的操作@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btnNum0:tvScreen.append("0");break;case R.id.btnNum1:tvScreen.append("1");break;case R.id.btnNum2:tvScreen.append("2");break;case R.id.btnNum3:tvScreen.append("3");break;case R.id.btnNum4:tvScreen.append("4");break;case R.id.btnNum5:tvScreen.append("5");break;case R.id.btnNum6:tvScreen.append("6");break;case R.id.btnNum7:tvScreen.append("7");break;case R.id.btnNum8:tvScreen.append("8");break;case R.id.btnNum9:tvScreen.append("9");break;case R.id.btnClear:tvScreen.setText("");items.clear();break;case R.id.btnDelete:break;case R.id.btnPlus:items.add(new Item(Double.parseDouble(tvScreen.getText().toString()), Types.NUM));//将显示屏的文本给数组checkAndCompute();//判断是否有3项,有的话进行加减乘除items.add(new Item(0, Types.ADD));  //等待用户添加操作符tvScreen.setText("");break;case R.id.btnSub:items.add(new Item(Double.parseDouble(tvScreen.getText().toString()), Types.NUM));checkAndCompute();items.add(new Item(0, Types.SUB));tvScreen.setText("");break;case R.id.btnMultiply:items.add(new Item(Double.parseDouble(tvScreen.getText().toString()), Types.NUM));checkAndCompute();items.add(new Item(0, Types.MUL));tvScreen.setText("");break;case R.id.btnDivide:items.add(new Item(Double.parseDouble(tvScreen.getText().toString()), Types.NUM));checkAndCompute();items.add(new Item(0, Types.DIV));tvScreen.setText("");break;case R.id.btnResult:items.add(new Item(Double.parseDouble(tvScreen.getText().toString()),Types.NUM));checkAndCompute();tvScreen.setText(items.get(0).value+"");items.clear();break;case R.id.btnPoint:break;}}public void checkAndCompute(){if(items.size()>=3){double a = items.get(0).value;double b = items.get(2).value;int opt = items.get(1).type;items.clear();switch (opt) {case Types.ADD:items.add(new Item(a+b, Types.NUM));break;case Types.SUB:items.add(new Item(a+b, Types.NUM));break;case Types.MUL:items.add(new Item(a+b, Types.NUM));break;case Types.DIV:items.add(new Item(a/b, Types.NUM));break;}}}}


Item.java

package com.example.calculator;public class Item {public Item(double value, int type) {this.value = value;this.type = type;}public double value;public int type;}


Types.java

package com.example.calculator;


public class Types {
public static final int ADD = 1;
public static final int SUB = 2;
public static final int MUL = 3;
public static final int DIV = 4;
public static final int NUM = 5;

}

0 0
原创粉丝点击