初始化值并在输入文本时检测它

时间:2018-05-16 11:54:39

标签: java android

我的问题是12 + 13 = 26.它首先取1并将其加到12,所以结果是13.然后,它需要13并将它添加到mresult是13.所以它给了我错误的答案。 我怎么知道用户完成输入,所以我可以将值初始化为number2?

        @Override
        public void afterTextChanged(Editable s) {
            //CURRENT_ACTION = DEF_____________________________________________

            if((CURRENT_ACTION == DEF) && !textNumber.getText().toString().isEmpty()){
                number1 = Double.parseDouble(textNumber.getText().toString());
                mResult = number1;
                textResult.setText(String.valueOf(mResult));

            }

            //CURRENT_ACTION = ADD______________________________________________

            else if(CURRENT_ACTION == ADD && !textNumber.getText().toString().isEmpty()){
                number2 = Double.parseDouble(s.toString());
                mResult = mResult + number2;
                textResult.setText(String.valueOf(mResult));
            }


            //CURRENT_ACTION = SUB__________________________________________________

            else if(CURRENT_ACTION == SUB && !textNumber.getText().toString().isEmpty()){
                number2 = Double.parseDouble(textNumber.getText().toString());
                mResult = mResult - number2;
                textResult.setText(String.valueOf(mResult));

            }
        }
    });

 buttonAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CURRENT_ACTION = ADD;
            textNumber.setText(null);

        }
    });

  buttonSub.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          CURRENT_ACTION = SUB;
          textNumber.setText(null);

      }
  });

1 个答案:

答案 0 :(得分:1)

通过查看代码,我想您的EditText textNumber用于输入所有内容。首先输入第一个数字,这个数字显示在结果TextView中。然后输入符号+CURRENT_ACTION设置为ADD。然后输入第二个数字,您希望结果textview显示结果。

在您的代码中,您将第一个数字存储在三个位置:

  • 作为结果TextView中的文本
  • 在变量number1
  • 在变量mResult中

没有必要(提示:这是结果)

您的问题是您修改并重用mResult。因此,您不要将第一个数字添加到第二个数字,而将临时结果添加到第二个数字。

当您遇到ADD时,从变量number1获取第一个数字(不会被修改),并添加从EditText获得的第二个数字。然后将结果直接存储在resultTextView中(mResult仍然没用)。

   @Override
        public void afterTextChanged(Editable s) {
            //CURRENT_ACTION = DEF_____________________________________________

            if((CURRENT_ACTION == DEF) && !textNumber.getText().toString().isEmpty()){
                //store the first number
                number1 = Double.parseDouble(textNumber.getText().toString());
                //display current result : number1
                textResult.setText(String.valueOf(mResult));

            }

            //CURRENT_ACTION = ADD______________________________________________

            else if(CURRENT_ACTION == ADD && !textNumber.getText().toString().isEmpty()){
                //store second number
                number2 = Double.parseDouble(s.toString());
                // display second + first number as result
                textResult.setText(String.valueOf(number1 + number2));
            }


        }
    });

如果您想要添加第三个数字。您需要修改更改CURRENT_ACTION的代码。当用户在您的editText中输入+时,您可以将CURRENT_ACTION定义为ADD。在这里,您可以添加一些代码来获取当前结果并将其存储为number1。

buttonAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CURRENT_ACTION = ADD;
            textNumber.setText(null);
            //get the result and store it as the first number
            //then we will add the second number
            // that will be get from the other part of the code
            //to this first number
            number1 = Double.parseDouble(textResult.getText().toString());
        }
    });

在这种情况下,将第一个值(当你遇到DEF时)存储到number1会变得无用,因为当用户按下+按钮时,它将被存储到number1。