計算器的等于沒反應
為什么計算器的等于沒反應?
package com.example.mach;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.text.Editable;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
//import android.view.Window;
public class MainActivity extends ActionBarActivity implements OnClickListener{
?private EditText et;
?private Button bt_c;
?private Button bt_del;
?private Button bt_cheng;
?private Button bt_minus;
?private Button bt_plus;
?private Button bt_equal;
?private Button bt_chu;
?private Button bt_point;
?
?private Button bt_7;
?private Button bt_8;
?private Button bt_9;
?private Button bt_4;
?private Button bt_5;
?private Button bt_6;
?private Button bt_1;
?private Button bt_2;
?private Button bt_3;
?private Button bt_0;
?private boolean clear_flag;//清空標識
?
??? @Override
??? protected void onCreate(Bundle savedInstanceState) {
??? ?
??????? super.onCreate(savedInstanceState);
??????? setContentView(R.layout.activity_main);
??????? et=(EditText)findViewById(R.id.et1);
??????? bt_c=(Button) findViewById(R.id.button_c);
??????? bt_equal=(Button) findViewById(R.id.btn_equal);
??????? bt_del=(Button) findViewById(R.id.button_del);
??????? bt_chu=(Button) findViewById(R.id.button_chu);
??????? bt_plus=(Button) findViewById(R.id.button_plus);
??????? bt_minus=(Button) findViewById(R.id.button_minus);
??????? bt_point=(Button) findViewById(R.id.button_point);
??????? bt_cheng=(Button) findViewById(R.id.button_cheng);
???????
??????? bt_7=(Button) findViewById(R.id.button_7);
??????? bt_8=(Button) findViewById(R.id.button_8);
??????? bt_9=(Button) findViewById(R.id.button_9);
??????? bt_4=(Button) findViewById(R.id.button_4);
??????? bt_5=(Button) findViewById(R.id.button_5);
??????? bt_6=(Button) findViewById(R.id.button_6);
??????? bt_1=(Button) findViewById(R.id.button_1);
??????? bt_2=(Button) findViewById(R.id.button_2);
??????? bt_3=(Button) findViewById(R.id.button_3);
??????? bt_0=(Button) findViewById(R.id.btn_0);
??????? //設置按鈕的點擊事件
??????? bt_c.setOnClickListener(this);
??????? bt_del.setOnClickListener(this);
??????? bt_chu.setOnClickListener(this);
??????? bt_plus.setOnClickListener(this);
??????? bt_cheng.setOnClickListener(this);
??????? bt_point.setOnClickListener(this);
??????? bt_minus.setOnClickListener(this);
??????? bt_equal.setOnClickListener(this);
???????
??????? bt_7.setOnClickListener(this);
??????? bt_8.setOnClickListener(this);
??????? bt_9.setOnClickListener(this);
??????? bt_4.setOnClickListener(this);
??????? bt_5.setOnClickListener(this);
??????? bt_6.setOnClickListener(this);
??????? bt_1.setOnClickListener(this);
??????? bt_2.setOnClickListener(this);
??????? bt_3.setOnClickListener(this);
??????? bt_0.setOnClickListener(this);
?
???????
?????? // this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉標題欄
??? }
??
??? @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);
??? }
?
?public void onClick(View arg0) {
??String str = et.getText().toString();??
??switch (arg0.getId()) {
??case R.id.btn_0:??
??case R.id.button_1:
??case R.id.button_2:
??case R.id.button_3:
??case R.id.button_4:
??case R.id.button_5:
??case R.id.button_6:
??case R.id.button_7:
??case R.id.button_8:
??case R.id.button_9:
??case R.id.button_point:
???if(clear_flag){
????clear_flag=false;
????str="";
????et.setText("");
???}
???et.setText(str+((Button) arg0).getText());
???break;??
??case R.id.button_plus:
??case R.id.button_minus:
??case R.id.button_cheng:
??case R.id.button_chu:?
???if(clear_flag){
????clear_flag=false;
????str="";
????et.setText("");
???}
???et.setText(str+" "+((Button) arg0).getText()+" ");
???break;
??case R.id.button_del:
???if(clear_flag){
????clear_flag=false;
????str="";
????et.setText("");
???}
???else if(str!=null&&str.equals("")){
????et.setText(str.substring(0, str.length()-1));?
???}
???break;
??case R.id.button_c:
???clear_flag=false;
???str="";
???et.setText("");
???break;
??case R.id.btn_equal:
???getResult();
???break;??
??}
?}
?/*
? * 運算結果
? */
??? private void getResult(){
??? ?String exp = et.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){
??? ????Toast.makeText(MainActivity.this, "除數不為0!", Toast.LENGTH_LONG).show();
??? ????et.setText("0");
??? ???}
??? ???else{
??? ???result=d1/d2;
??? ???}
??? ??}
??? ?? if(!s1.contains(".")&&!s2.contains(".")&&!op.contains("+")){
??? ???int r= (int) result;
??? ???et.setText(r+"");
??? ??}else {
??? ???et.setText(result+"");
??? ??}
??? ?}
???
??? ?else if(!s1.equals("")&&s2.equals("")){
??? ??double d1=Double.parseDouble(s1);
??? ??result=d1;
??? ??Toast.makeText(MainActivity.this, "不具備運算!", Toast.LENGTH_LONG).show();
??? ??et.setText(result+"");
??? ??}
??? ??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.setText(r+"");
??????? ??}else {
??????? ???et.setText(result+"");
??????? ??}
??? ??}else{
??? ???et.setText("");
??? ?}
??? }
?? }
???
2017-02-28
?private?void?getResult()?{ ?????... ?????String?s2?=?exp.substring(exp.indexOf("?")?+?3);//?運算符后的字符 ?????//?if?(!s1.equals("")?&&?s2.equals(""))?{?此處s2的判斷應取反 ?????if?(!s1.equals("")?&&?!s2.equals(""))?{ ?????... ?}- -|| 上面那個作廢。。。課程答案竟然沒法修改
2017-03-02
你的空格有的不對,你可以再看看視頻,空格有的是""-------有的是" "注意
2017-03-01
你可以 ?試一下我改了的 ?修改了沒說的bug 還好吧 你可以用用試試
2017-03-01
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_showview; boolean?needclear; @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_divide?=?(Button)?findViewById(R.id.btn_divide);//?除以 btn_multiply?=?(Button)?findViewById(R.id.btn_multiply);//?乘以 btn_minus?=?(Button)?findViewById(R.id.btn_minus);//?減去 btn_pluse?=?(Button)?findViewById(R.id.btn_pluse);//?加 btn_equal?=?(Button)?findViewById(R.id.btn_equal);//?等于 btn_clear?=?(Button)?findViewById(R.id.btn_clear); btn_del?=?(Button)?findViewById(R.id.btn_del); et_showview?=?(EditText)?findViewById(R.id.et_showview); 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_showview.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_showview.setText(""); needclear?=?false; } et_showview.setText(str?+?((Button)?v).getText()); break; case?R.id.btn_pluse: case?R.id.btn_minus: case?R.id.btn_multiply: case?R.id.btn_divide: et_showview.setText(str?+"?"+((Button)?v).getText()+"?"); break; case?R.id.btn_equal: getResult(); break; case?R.id.btn_del: if?(str?!=?null?&&?!str.equals(""))?{ if(str.substring(str.length()-1,str.length()).equals("?")){ et_showview.setText(str.substring(0,?str.length()?-?3)); }else{ et_showview.setText(str.substring(0,?str.length()?-?1)); } } break; case?R.id.btn_clear: et_showview.setText(""); break; } } /** ?*?獲取計算結果 ?*/ private?void?getResult()?{ needclear?=?true; boolean?pointT?=?false; String?exp?=?et_showview.getText().toString(); double?r?=?0; if(!exp.contains("?")||exp.substring(exp.length()-1,?exp.length()).equals("?")){ et_showview.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_showview.setText(result+""); }else{ et_showview.setText(r+""); } } // // /*** // ?*?@param?exp // ?*????????????算數表達式 // ?*?@return?根據表達式返回結果 // ?*/ // private?String?getRs(String?exp)?{ // Interpreter?bsh?=?new?Interpreter(); // Number?result?=?null; // try?{ // exp?=?filterExp(exp); // result?=?(Number)?bsh.eval(exp); // }?catch?(EvalError?e)?{ // e.printStackTrace(); // return?"0"; // } // return?result.doubleValue()?+?""; // } // // /** // ?*?@param?exp // ?*????????????算數表達式 // ?*?@return?因為計算過程中,全程需要有小數參與. // ?*/ // private?String?filterExp(String?exp)?{ // String?num[]?=?exp.split(""); // String?temp?=?null; // double?dtemp?=?0?; // String?str_temp=""; // for?(int?i?=?0;?i?<?num.length;?i++)?{ // temp?=?num[i]; // // if?(temp.equals("+")?||?temp.equals("-")?||?temp.equals("×") // ||?temp.equals("÷"))?{ // if(dtemp==0){ // dtemp=Double.parseDouble(str_temp); // } // // str_temp=""; // }else{ // str_temp=str_temp+temp; // } // } // // int?begin?=?0,?end?=?0; // for?(int?i?=?1;?i?<?num.length;?i++)?{ // temp?=?num[i]; // if?(temp.matches("[+-/()*]"))?{ // if?(temp.equals(".")) // continue; // end?=?i?-?1; // temp?=?exp.substring(begin,?end); // if?(temp.trim().length()?>?0?&&?temp.indexOf(".")?<?0) // num[i?-?1]?=?num[i?-?1]?+?".0"; // begin?=?end?+?1; // } // } // return?Arrays.toString(num).replaceAll("[\\[\\],?]",?""); // } }2017-02-28
?private?void?getResult()?{ ?????... ?????String?s2?=?exp.substring(exp.indexOf("?")?+?3);//?運算符后的字符 ?????//?if?(!s1.equals("")?&&?s2.equals(""))?{?此處s2的判斷應取反 ?????if?(!s1.equals("")?&&?s2.equals(""))?{ ?????... ?}我寫過兩篇關于這個計算器的手記,有時間可以去看看