DAY28 第一个完整程序练习,一台计算机!(三)

今天我们要来讲剩下的方法

    public void time(View view){
        if (record == 5) {
            record = 2;
        }
        think();
        recordtime = 0;
        record = 2;
        number.setText(temp +"×");
        warming++;
        warm();
    }

先分temp等不等於0和num2不等於0,前者的话temp就等於一,再让time等於temp,最後归零num,再判断num2等不等於0,是的话就temptime=time X num2,不是就temptime = time,这里我前面少了第一个判断,卡了很久

    public void devide(View view){
        if (record == 5) {
            record = 3;
        }
        think();
        recordtime = 0;
        record = 3;
        number.setText(temp +"÷");
        warming++;
        warm();
    }

讲到除法就很忌讳0,所以前面要先片段是否数字为0,是就变成1,接着就tempdevide = num2 / devide和tempdevide = devide / num2差别,毕竟刚开始按了数字再按除键,数字不会变,但还是要纪录一下,我再打的时候也想了很久

    public  void warm(){
        if (warming > 1){
            new AlertDialog.Builder(MainActivity.this)
                    .setTitle("Warming")
                    .setMessage("运算符号输入两遍")
                    .setPositiveButton("OK",null)
                    .show();

            number.setText("0");
            num = 0;
            num1 =0 ;
            num2 = 0;
            temp = 0;
            record = 5;
            recordplus = 1;
            recordnegetive = 1;
            recordtime = 1;
            recorddevide = 1;
            plus = 0;
            negetive = 0;
            time = 0;
            devide = 0;
            warming = 0;
        }
    }

这个只是再判断如果使用者按了两下运算符号就警告并归零,没有很难懂

    public void enter(View view){
        think();
        number.setText(""+temp);
    }

enter按了之後就会显示答案,蛮简单的方法
我在下面贴一下完整的程序码,就不会那麽乱了

        TextView number;
        double num;
        double num1;
        double num2 = 0;

        double tempplus;
        double tempnegetive;
        double temptime;
        double tempdevide;
        double temp = 0;

        double plus =0;
        double negetive =0;
        double time = 1;
        double devide = 1;

        int record = 5;
        int recordplus = 1;
        int recordnegetive =1;
        int recordtime = 1;
        int recorddevide =1;

        int warming = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        number = findViewById(R.id.number);
    }

    public void count(){
        num = (num2 * 10)+ num1;
        num2 = num;
        warming = 0;
    }
    public void one(View view){
        num1 = 1;
        count();
        number.setText(num+"");
    }

    public void two(View view){
        num1 = 2;
        count();
        number.setText(num+"");
    }

    public void three(View view){
        num1 = 3;
        count();
        number.setText(num+"");
    }

    public void four(View view){
        num1 = 4;
        count();
        number.setText(num+"");
    }

    public void five(View view){
        num1 = 5;
        count();
        number.setText(num+"");
    }

    public void six(View view){
        num1 = 6;
        count();
        number.setText(num+"");
    }

    public void seven(View view){
        num1 = 7;
        count();
        number.setText(num+"");
    }

    public void eight(View view){
        num1 = 8;
        count();
        number.setText(num+"");
    }

    public void nine(View view){
        num1 = 9;
        count();
        number.setText(num+"");
    }

    public void zero(View view){
        num1 = 0;
        count();
        number.setText(num+"");
    }

    public void think(){
        if(record == 0){
            plus = temp;
            num = 0;
            tempplus = plus + num2;
            plus = tempplus;
            num2 = 0;
            temp = plus;
        }else if(record == 1){
            if (temp == 0) {
                negetive = temp;
                num=0;
                tempnegetive = num2;
            }else {
                negetive = temp;
                num = 0;
                tempnegetive = negetive - num2;
            }
            negetive = tempnegetive;
            num2 =0;
            temp = negetive;
        }else if(record == 2){
            if(temp == 0 && num2!=0){
                temp = 1;
            }
            time = temp;
            num = 0;
            if(num2!=0) {
                temptime = time * num2;
            }else {
                temptime = time;
            }
            time = temptime;
            num2 = 0;
            temp = time;
        }else if(record == 3){
            if(temp == 0){
                temp = 1;
                devide = temp;
                num = 0;
                tempdevide = num2 / devide;
            }else {
                devide = temp;
                num = 0;
                tempdevide = devide / num2;
            }
            devide = tempdevide;
            num2 = 0;
            temp = devide;
        }
    }
    public  void warm(){
        if (warming > 1){
            new AlertDialog.Builder(MainActivity.this)
                    .setTitle("Warming")
                    .setMessage("运算符号输入两遍")
                    .setPositiveButton("OK",null)
                    .show();

            number.setText("0");
            num = 0;
            num1 =0 ;
            num2 = 0;
            temp = 0;
            record = 5;
            recordplus = 1;
            recordnegetive = 1;
            recordtime = 1;
            recorddevide = 1;
            plus = 0;
            negetive = 0;
            time = 0;
            devide = 0;
            warming = 0;
        }
    }
    public void plus(View view){
        if (record == 5){
            record = 0;
        }
        think();
        recordplus = 0;
        record = 0;
        number.setText( temp+"+");
        warming++;
        warm();
    }
    public void negetive(View view){
        if (record == 5){
            record = 1;
        }
        think();
        recordnegetive = 0;
        record = 1;
        number.setText( temp + "-");
        warming++;
        warm();
    }
    public void time(View view){
        if (record == 5) {
            record = 2;
        }
        think();
        recordtime = 0;
        record = 2;
        number.setText(temp +"×");
        warming++;
        warm();
    }
    public void devide(View view){
        if (record == 5) {
            record = 3;
        }
        think();
        recordtime = 0;
        record = 3;
        number.setText(temp +"÷");
        warming++;
        warm();
    }
    public void ac(View view){
        number.setText("0");
         num = 0;
         num1 =0 ;
         num2 = 0;
         temp = 0;
         record = 5;
         recordplus = 1;
         recordnegetive = 1;
         recordtime = 1;
         recorddevide = 1;
         plus = 0;
         negetive = 0;
         time = 0;
         devide = 0;
    }
    public void delete(View view){
        if(num >= 10) {
            num = (num - num1)/ 10;
            num2 = num;
            number.setText(num+"");
        }else if(num > 0){
            num = 0;
            num2 = num;
            number.setText(num+"");
         }
    }
    public void enter(View view){
        think();
        number.setText(""+temp);
    }

但毕竟我也是新手,很有可能有逻辑错误,因此造成一些奇怪的BUG,所以就请多多包涵罗!


<<:  [Day29]懒惰的人是时间的奴隶-资料医生,补值高手

>>:  [Day29] Room创出来就好吗?

Day35 参加职训(机器学习与资料分析工程师培训班),专题讨论

今日时间主要给学员与组员讨论专题,另外助教也分享参赛及制作专题的心得。 ...

Day 29 - 使用 CDK 创建 WordPress

前几天做了很多 AWS 服务使用 CDK 部署的介绍,今天我想来介绍一个满多人都有机会用到的 Blo...

Day09:气泡排序(Bubble Sort)

何谓「排序(Sort)」? 排序是指一组资料中,将资料以「由大到小」或「由小到大」的方式重新排列。 ...

Day17 测试写起乃 - expect() vs expect {}

今天就来说说 expect() 与 expect {} 的差别吧 我们用一个例子来讲 describ...

[Day04] TS:如何把物件型别的所有属性名称取出变成 union type?试试看 keyof 吧!

前面两天的文章中我们谈到泛型(generics)的使用,以及如何透过 extends 来限制泛型可被...