Androidジョブ:シンプルコンピューティング実装

9671 ワード

image.png
構想
  • まずインタフェースを設計し、activity_main.xml計算機インタフェース、必要:テキストボックスTextView--数字を表示する;数字、記号ボタンButton
  • 
    
        
        
     
        
    1. 接下来是功能的实现,MainActivity.java
      给各个按钮注册点击事件、对输入内容的判断和计算等。
    package com.example.asus.calculator;
     
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.Button;
    import android.widget.TextView;
    import android.view.View;
    import android.view.View.OnClickListener;
     
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
     
        Button btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,
                btnClear,btnPlus,btnSubtract,btnMultiply,btnDivide,btnSum,btnPoint;
        TextView text;
        String str = "";
        boolean clr_flag;
     
        @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);
            btnClear = (Button) findViewById(R.id.btnClear);
            btnPlus = (Button) findViewById(R.id.btnPlus);
            btnSubtract = (Button) findViewById(R.id.btnSubtract);
            btnMultiply = (Button) findViewById(R.id.btnMultiply);
            btnDivide = (Button) findViewById(R.id.btnDivide);
            btnPoint = (Button) findViewById(R.id.btnPoint);
            btnSum = (Button) findViewById(R.id.btnSum);
     
            text = (TextView) findViewById(R.id.text) ;
     
            btn0.setOnClickListener(this);
            btn1.setOnClickListener(this);
            btn2.setOnClickListener(this);
            btn3.setOnClickListener(this);
            btn4.setOnClickListener(this);
            btn5.setOnClickListener(this);
            btn6.setOnClickListener(this);
            btn7.setOnClickListener(this);
            btn8.setOnClickListener(this);
            btn9.setOnClickListener(this);
            btnClear.setOnClickListener(this);
            btnPlus.setOnClickListener(this);
            btnSubtract.setOnClickListener(this);
            btnMultiply.setOnClickListener(this);
            btnDivide.setOnClickListener(this);
            btnPoint.setOnClickListener(this);
            btnSum.setOnClickListener(new click());
     
        }
     
        public void onClick(View v) {
            String input=text.getText().toString();
            switch (v.getId()){
                case   R.id.btn0:
                case   R.id.btn1:
                case   R.id.btn2:
                case   R.id.btn3:
                case   R.id.btn4:
                case   R.id.btn5:
                case   R.id.btn6:
                case   R.id.btn7:
                case   R.id.btn8:
                case   R.id.btn9:
                case   R.id.btnPoint:
                    if(clr_flag){
                        clr_flag=false;
                        str="";
                        text.setText("");
                    }
                    text.setText(input+((Button)v).getText());
                    break;
                case R.id.btnPlus:
                case R.id.btnSubtract:
                case R.id.btnMultiply:
                case R.id.btnDivide:
                    if(clr_flag){
                        clr_flag=false;
                        input="";
                        text.setText("");
                    }
                    text.setText(input + " " + ((Button)v).getText() + " ");
                    break;
                case R.id.btnClear:
                    text.setText("");
                    break;
            }
        }
        class click implements OnClickListener{
            public void onClick (View v) {
                getResult();//    ,    
            }
        }
     
        private void getResult () {
            String str1 = text.getText().toString();
            if(str1 == null || str1.equals("")){
                return;
            }
            if(!str1.contains(" ")){
                return ;
            }
            if(clr_flag){
                clr_flag=false;
                return;
            }
            clr_flag=true;
            double result = 0;
    //               
            String s1 = str1.substring(0,str1.indexOf(" "));
    //           
            String op = str1.substring(str1.indexOf(" ")+1,str1.indexOf(" ")+2);
    //               
            String s2 = str1.substring(str1.indexOf(" ")+3);
    //          
    //        1.   s1、s2    
            if(!s1.equals("")&&!s2.equals("")) {   //       
                double d1 = Double.parseDouble(s1);//     double  
                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) { //      0
                        result = 0; //    0
                    }
                    else {//           
                        result = d1 / d2;
                    }
                }
                if (!s1.contains(".") && !s2.contains(".") && !op.equals("/")) {//       
                    int r = (int) result; //    
                    text.setText(str1 + " = " + r + "");
                } else{
                    text.setText(str1 + " = " + result + "");
                }
            }
    //              s1   ,s2  
            else if(!s1.equals("")&&s2.equals("")){
                double d1 = Double.parseDouble(s1);
                if (op.equals("+")){
                    result = d1;
                }
                if (op.equals("-")) {
                    result = d1;
                }
                if (op.equals("*")) {
                    result = 0;
                }
                if (op.equals("/")) {
                    result = 0;
                }
                if(!s1.contains(".")) {
                    int res = (int) result;
                    text.setText(str1 + " = " + res+"");
                }else {
                    text.setText(str1 + " = " + result+"");
                }
            }
    //          s1  ,s2   
            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(!s1.contains(".") && !s2.contains(".")){
                    int res = (int) result;
                    text.setText(str1 + " = " + res + "");
                }else{
                    text.setText(str1 + " = " + result + "");
                }
            }else{
                text.setText("");
            }
        }
    }