不論前面計算方式是啥,我按等號后都是輸出一個0
package com.example.calculatordemo;
?
import android.R.integer;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
?
public class MainActivity extends Activity implements 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_divide;// 除以
? ? Button btn_multiply;// 乘以
? ? Button btn_minus;// 減去
? ? Button btn_pluse;// 加
? ? Button btn_equal;// 等于
?
? ? Button btn_clear;
? ? Button btn_del;
?
? ? EditText et_input;
? ? boolean needclear;
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main3);
? ? ? ? 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_divide = (Button) findViewById(R.id.btn_divide);// 除以
? ? ? ? btn_multiply = (Button) findViewById(R.id.btn_multiplay);// 乘以
? ? ? ? btn_minus = (Button) findViewById(R.id.btn_minus);// 減去
? ? ? ? btn_pluse = (Button) findViewById(R.id.btn_plus);// 加
? ? ? ? btn_equal = (Button) findViewById(R.id.btn_equle);// 等于
?
? ? ? ? btn_clear = (Button) findViewById(R.id.btn_clear);
? ? ? ? btn_del = (Button) findViewById(R.id.btn_del);
? ? ? ? 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_divide.setOnClickListener(this);
? ? ? ? btn_multiply.setOnClickListener(this);
? ? ? ? btn_minus.setOnClickListener(this);
? ? ? ? btn_pluse.setOnClickListener(this);
? ? ? ? btn_equal.setOnClickListener(this);
?
? ? ? ? btn_clear.setOnClickListener(this);
? ? ? ? btn_del.setOnClickListener(this);
? ? }
?
? ? @Override
? ? public void onClick(View v) {
? ? ? ? // TODO Auto-generated method stub
? ? ? ? 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(needclear&&!str.contains("+")&&!str.contains("-")&&!str.contains("×")&&!str.contains("÷")){
? ? ? ? ? ? ? ? str = "";
? ? ? ? ? ? ? ? et_input.setText("");
? ? ? ? ? ? ? ? needclear = false;
? ? ? ? ? ? }
? ? ? ? ? ? et_input.setText(str + ((Button) v).getText());
? ? ? ? ? ? break;
? ? ? ? case R.id.btn_plus:
? ? ? ? case R.id.btn_minus:
? ? ? ? case R.id.btn_multiplay:
? ? ? ? case R.id.btn_divide:
? ? ? ? et_input.setText(str +" "+((Button) v).getText()+" ");
? ? ? ? ? ? break;
? ? ? ? case R.id.btn_equle:
? ? ? ? ? ? getResult();
? ? ? ? ? ? break;
? ? ? ? case R.id.btn_del:
? ? ? ? ? ? if (str != null && !str.equals("")) {
? ? ? ? ? ? ? ? if(str.substring(str.length()-1,str.length()).equals(" ")){
? ? ? ? ? ? ? ? et_input.setText(str.substring(0, str.length() - 3));
? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? et_input.setText(str.substring(0, str.length() - 1));
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case R.id.btn_clear:
? ? ? ? et_input.setText("");
? ? ? ? ? ? break;
? ? ? ? }
? ? }
?
? ? /**
? ? ?* 獲取計算結果
? ? ?*/
? ? private void getResult() {
? ? ? ? needclear = true;
? ? ? ? boolean pointT = false;
? ? ? ? String exp = et_input.getText().toString();
? ? ? ? double r = 0;
? ? ? ? if(!exp.contains(" ")||exp.substring(exp.length()-1, exp.length()).equals(" ")||exp.contains(" ?")){
? ? ? ? et_input.setText(exp+"");
? ? ? ? ? ? Toast.makeText(MainActivity.this, "計算的數據有錯", 2).show();
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? String space[] = exp.split(" "); //通過空格獲取每個數據
? ? ? ? Double arg1 = Double.parseDouble(space[0]);//得到第一個數據,并且轉化為Double類型
? ? ? ? if(space[0].contains(".")){
? ? ? ? ? ? pointT = true;
? ? ? ? }
? ? ? ? for (int i = 1;i<space.length;) {
? ? ? ? ? ? if(space[i+1].contains(".")){
? ? ? ? ? ? ? ? pointT = true;
? ? ? ? ? ? }
? ? ? ? ? ? String op = space[i];
? ? ? ? ? ? double arg2 = Double.parseDouble(space[i+1]);
? ? ? ? ? ? if(op.equals("+")){
? ? ? ? ? ? ? ? ?r = arg1 + arg2;
? ? ? ? ? ? }else if(op.equals("-")){
? ? ? ? ? ? ? ? r = arg1 - arg2;
? ? ? ? ? ? }else if(op.equals("×")){
? ? ? ? ? ? ? ? ?r = arg1 * arg2;
? ? ? ? ? ? }else if(op.equals("÷")){
? ? ? ? ? ? ? ? ?if (arg2 == 0)
? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? r=0;
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ?else
? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ?r = arg1 / arg2;
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? }?
? ? ? ? ? ? arg1=r;
? ? ? ? ? ? i=i+2;
? ? ? ? }
? ? ? ? if(!pointT){
? ? ? ? ? ? int result = (int)r;
? ? ? ? ? ? et_input.setText(result+"");
? ? ? ? }else{
? ? ? ? et_input.setText(r+"");
? ? ? ? }
? ? }
}
圖形界面我是用表格布局做的,因為不關事吧。。
2017-03-21
package?com.lanou.calculator; import?android.support.v7.app.AppCompatActivity; import?android.os.Bundle; import?android.view.View; import?android.widget.Button; import?android.widget.EditText; import?android.widget.TextView; 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?; ????TextView?TVresult?; ????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_add)?; ????????btn_minus?=?(Button)?findViewById(R.id.btn_sub)?; ????????btn_multiply?=?(Button)?findViewById(R.id.btn_mul)?; ????????btn_divide?=?(Button)?findViewById(R.id.btn_div)?; ????????btn_equle?=?(Button)?findViewById(R.id.btn_equal)?; ????????//以上實例化按鈕 ????????TVresult?=?(TextView)?findViewById(R.id.TVresult);??//實例化之后的顯示屏 ????????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?=?TVresult.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?=""?; ????????????????????TVresult.setText(""); ????????????????} ????????????????TVresult.setText(str?+?((Button)v).getText()); ????????????????break?; ????????????case?R.id.btn_add: ????????????case?R.id.btn_sub: ????????????case?R.id.btn_mul: ????????????case?R.id.btn_div: ????????????????if?(clear_flag)?{ ????????????????????clear_flag?=false?; ????????????????????str?=""?; ????????????????????TVresult.setText(""); ????????????????} ???????????????TVresult.setText(str+?"?"?+?((Button)v).getText()+"?"); ????????????????break; ????????????case?R.id.btn_del: ????????????????if?(clear_flag)?{ ????????????????????clear_flag?=false?; ????????????????????str?=""?; ????????????????????TVresult.setText(""); ????????????????}else?if?(str!=null&&!str.equals("")){ ????????????????????TVresult.setText(str.substring(0,str.length()-1)); ????????????????} ????????????????break; ????????????case?R.id.btn_clear: ????????????????clear_flag?=false?; ????????????????str?=""?; ????????????????TVresult.setText(""); ????????????case?R.id.btn_equal: ????????????????getResult(); ????????????????break?; ????????} ????} ????/*?單獨的調用運算結果 ????* ????* ????*?*/ ????private?void?getResult(){ ????????String?exp?=?TVresult.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; ????????????????TVresult.setText(r+""); ????????????}else?{ ????????????????TVresult.setText(result+""); ????????????} ????????}else?if?(!s1.equals("")&&s2.equals("")){ ????????????TVresult.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; ????????????????TVresult.setText(r+""); ????????????}else?{ ????????????????TVresult.setText(result+""); ????????????} ????????}else?{ ????????????TVresult.setText(""); ????????} ????} }