计算器一个输入机器人的EditText [英] calculator with one input edittext android

查看:262
本文介绍了计算器一个输入机器人的EditText的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在android的初学者。我试图做只有一个输入编辑文本的计算器。
当我点击+按键没有给出一个和输出。得到一个正确的答我必须点击这两个项目后的+按钮。想获得一笔我会做它作为1+1+=。然后它会给2.这里是我的code,someoneplease帮我。

 公共无效的onClick(视图v){
    双总和= 0;
    开关(v.getId()){
    案例R.id.buttonplus:
        总和+ = Double.parseDouble(将String.valueOf(textView.getText()));
        numberDisplayed.delete(0,numberDisplayed.length());
        打破;
    案例R.id.buttonequal:
        resultView.setText(将String.valueOf(和));
        总和= 0;
    }


解决方案

如果我理解正确,你想要的总和后您展示preSS的等于按钮。如果是这样,那么你需要有

 之和+ = Double.parseDouble(将String.valueOf(textView.getText()));

在此行也。

 情况下R.id.buttonequal:
    总和+ = Double.parseDouble(将String.valueOf(textView.getText()));
    resultView.setText(将String.valueOf(和));
    总和= 0;

也不会进入第二个数字然而,当你preSS加按钮这样的总和仅仅是一个数字。然后,你必须preSS它再次添加到

所以,如果等于BTN pressed,像

 如果(lastOp.equals(分)
{
    总和 - = Double.parseDouble(将String.valueOf(textView.getText()));
...
}

示例

 公共类SimpleCalculatorActivity扩展活动
{
    //变量需要类范围
    双答复= 0,数字1,数字;
    INT运算符= 0,号码;
    布尔hasChanged =假,标志= FALSE;
    字符串显示= NULL;
    字符串显示2 = NULL;
    字符串curDisplay = NULL;
    串calcString =;
    串inputLabel;
    字符串inputString = NULL;
    字符串inputString2 = NULL;
    字符串inputString3 = NULL;
    / **当第一次创建活动调用。 * /
    @覆盖
    公共无效的onCreate(捆绑savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
        this.setTitle(超级骗子计算器);        initButtons();
    }
        //当按钮被pressed,发送到NUM钙功能
        button1.setOnClickListener
        (新Button.OnClickListener()
            {
                公共无效的onClick(视图v)
                {
                    。inputString = button1.getText()的toString();
                    displayCalc(inputString);
                }
            }
        );        button2.setOnClickListener
        (新Button.OnClickListener()
            {
                公共无效的onClick(视图v)
                {
                    。inputString = button2.getText()的toString();
                    displayCalc(inputString);
                }
            }
        );
        ...
        //发送运营商calc下功能
        addButton.setOnClickListener
        (新Button.OnClickListener()
            {
                公共无效的onClick(视图v)
                {
                    计算(1);
                }
            }
        );        subButton.setOnClickListener
        (新Button.OnClickListener()
            {
                公共无效的onClick(视图v)
                {
                    计算(2);
                }
            }
        );
        calcButton.setOnClickListener
        (新Button.OnClickListener()
            {
                公共无效的onClick(视图v)
                {
                    计算(5);
                }
            }
        );        clearButton.setOnClickListener
        (新Button.OnClickListener()
            {
                公共无效的onClick(视图v)
                {
                    计算(6);
                }
            }
        );
    }    //函数来计算
    公共无效计算(INT输入)
    {
        号=输入;        //看到被点击该运营商
        开关(数)
        {
            情况1:
                运营商= 1;
                hasChanged = TRUE;
                显示=;
                showDisplay(+);
                打破;
            案例2:
                运营商= 2;
                hasChanged = TRUE;
                显示=;
                showDisplay( - );
                打破;
            案例3:
                运营商= 3;
                hasChanged = TRUE;
                显示=;
                showDisplay(*);
                打破;
            情况4:
                运算符= 4;
                hasChanged = TRUE;
                显示=;
                showDisplay(/);
                打破;
            情况5:
                号码2 = Double.parseDouble(显示2);
                如果(号码2 == 0)
                {
                    custErrMsg();
                }
                其他
                {
                    操作者();
                    displayAnswer(答案);
                    hasChanged = TRUE;
                }
                打破;
            情况6:
                明确();
                打破;
            默认:
                明确();
                打破;
        }
    }    私人无效运算符()
    {
        如果(操作!= 0)
        {
            如果(操作员== 1)
            {
                回答=数字1 +数字2;
            }
            否则,如果(操作符== 2)
            {
                答案= NUM​​BER1 - 数字2;
            }
            否则,如果(==操作符3)
            {
                答案= NUM​​BER1 *号码2;
            }
            否则,如果(==操作符4)
            {
                答案=数字1 /(编号2);
            }
        }
    }    私人无效displayCalc(字符串curValue)
    {
        字符串curNum = curValue;        如果(!hasChanged)
        {
            如果(显示屏== NULL)
            {
                //显示号码,如果复位
                inputString2 = curNum;
                显示= inputString2;
                showDisplay(显示);            }
            其他
            {
                //显示previous输入+新的输入
                inputString2 = inputString2 + curNum;
                显示=显示+ curNum;
                showDisplay(显示);
            }
        }
        其他
        {
            displayNum2(curNum);
        }
    }    私人无效displayNum2(字符串curValue2)
    {
        串curNum2;
        curNum2 = curValue2;
        如果(!标志)
        {
            //显示号码,如果复位
            inputString3 = curNum2;
            显示2 = inputString3;
            NUMBER1 = Double.parseDouble(inputString2);
            标志=真实的;
        }
        其他
        {
            //显示previous输入+新的输入
            inputString3 = curNum2;
            显示2 =显示2 + curNum2;
        }
        showDisplay(inputString3);
    }    私人无效displayAnswer(双curAnswer)
    {
        字符串finAnswer =将String.valueOf(curAnswer);
        TextView的textView1 =(的TextView)findViewById(R.id.textView1);
        textView1.setBackgroundColor(为0xffffffff);
        textView1.setText(finAnswer);
    }    私人无效showDisplay(字符串输出)
    {
        inputLabel =输出;
        TextView的textView1 =(的TextView)findViewById(R.id.textView1);
        textView1.setBackgroundColor(为0xffffffff);        如果(操作!= 0)
        {
            。curDisplay = textView1.getText()的toString();
            textView1.setText(curDisplay + inputLabel);
        }
        其他
        {
            textView1.setText(inputLabel);
        }
    }

i am a beginner in android. i am trying to make a calculator with just one input edit text. when i click + button it doesn't give a sum output. to get a correct ans i have to click the +button after both the entries. like to get a sum i will do it as 1"+" 1"+""=. then it would give 2. here's my code,someoneplease help me.

public void onClick(View v){
    double sum=0; 
    switch(v.getId()){
    case R.id.buttonplus:
        sum += Double.parseDouble(String.valueOf(textView.getText()));
        numberDisplayed.delete(0,numberDisplayed.length());
        break;
    case R.id.buttonequal:
        resultView.setText(String.valueOf(sum));
        sum=0;
    }

解决方案

If I understand you correctly, you want the sum to show after you press the "equals" button. If so, then you need to have

sum += Double.parseDouble(String.valueOf(textView.getText()));

in this line also

case R.id.buttonequal:
    sum += Double.parseDouble(String.valueOf(textView.getText()));
    resultView.setText(String.valueOf(sum));
    sum=0;

The second number isn't entered yet when you press the "plus" button so the sum is only the first number. Then you have to press it again to add to sum

So in if equals btn pressed, something like

if (lastOp.equals("sub")
{
    sum -=  Double.parseDouble(String.valueOf(textView.getText()));
...
}

Example

public class SimpleCalculatorActivity extends Activity
{
    //variables needing class scope
    double answer = 0, number1, number2;
    int operator = 0, number;
    boolean hasChanged = false, flag = false;
    String display = null;
    String display2 = null;
    String curDisplay = null;
    String calcString = "";
    String inputLabel;  
    String inputString = null;
    String inputString2 = null;
    String inputString3 = null;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setTitle("Super Duper Calculator");

        initButtons();      
    }   
        //when button is pressed, send num to calc function
        button1.setOnClickListener
        (new Button.OnClickListener()
            {
                public void onClick(View v)
                {
                    inputString = button1.getText().toString();
                    displayCalc(inputString);
                }
            }
        );

        button2.setOnClickListener
        (new Button.OnClickListener()
            {
                public void onClick(View v)
                {
                    inputString = button2.getText().toString();
                    displayCalc(inputString);
                }
            }
        );
        ...
        //send operator to calc function
        addButton.setOnClickListener
        (new Button.OnClickListener()
            {
                public void onClick(View v)
                {
                    calculation(1);
                }
            }
        );

        subButton.setOnClickListener
        (new Button.OnClickListener()
            {
                public void onClick(View v)
                {
                    calculation(2);
                }
            }
        );       
        calcButton.setOnClickListener
        (new Button.OnClickListener()
            {
                public void onClick(View v)
                {
                    calculation(5);
                }
            }
        );

        clearButton.setOnClickListener
        (new Button.OnClickListener()
            {
                public void onClick(View v)
                {
                    calculation(6);
                }
            }
        );
    }   

    //function to calculate
    public void calculation(int input)
    {
        number = input;

        //see which operator was clicked
        switch (number)
        {
            case 1:
                operator = 1;
                hasChanged = true;
                display = "";
                showDisplay("+");
                break;
            case 2:
                operator = 2;
                hasChanged = true;
                display = "";
                showDisplay("-");               
                break;
            case 3:
                operator = 3;
                hasChanged = true;
                display = "";
                showDisplay("*");
                break;
            case 4:
                operator = 4;
                hasChanged = true;
                display = "";
                showDisplay("/");
                break;
            case 5:
                number2 = Double.parseDouble(display2);
                if(number2 == 0)
                {
                    custErrMsg();
                }
                else
                {
                    operator();
                    displayAnswer(answer);
                    hasChanged = true;
                }
                break;
            case 6:
                clear();
                break;
            default:
                clear();
                break;
        }
    }

    private void operator()
    {
        if (operator != 0) 
        {
            if (operator == 1)
            {
                answer = number1 + number2;
            }
            else if (operator == 2)
            {
                answer = number1 - number2;
            }
            else if (operator == 3)
            {
                answer = number1 * number2;
            }
            else if (operator == 4)
            {
                answer = number1 / (number2);
            }
        }
    }

    private void displayCalc(String curValue)
    {
        String curNum = curValue;

        if (!hasChanged)
        {
            if (display == null)
            {
                //display number if reset
                inputString2 = curNum;
                display = inputString2;    
                showDisplay(display);

            }
            else
            {
                //display previous input + new input
                inputString2 = inputString2 + curNum;
                display =  display + curNum;
                showDisplay(display);
            }
        }
        else                                                    
        {   
            displayNum2(curNum);
        }
    }

    private void displayNum2 (String curValue2)
    {
        String curNum2;
        curNum2 = curValue2;
        if (!flag)
        {
            //display number if reset
            inputString3 = curNum2;
            display2 = inputString3;
            number1 = Double.parseDouble(inputString2);
            flag = true;
        }
        else
        {
            //display previous input + new input
            inputString3 = curNum2;
            display2 = display2 + curNum2;
        }
        showDisplay(inputString3);
    }

    private void displayAnswer(double curAnswer)
    {
        String finAnswer = String.valueOf(curAnswer);  
        TextView textView1 = (TextView) findViewById(R.id.textView1);
        textView1.setBackgroundColor(0xffffffff);
        textView1.setText(finAnswer);
    }

    private void showDisplay(String output)
    {   
        inputLabel = output;
        TextView textView1 = (TextView) findViewById(R.id.textView1);
        textView1.setBackgroundColor(0xffffffff);

        if (operator != 0)
        {
            curDisplay = textView1.getText().toString();
            textView1.setText(curDisplay + inputLabel);
        }     
        else
        {
            textView1.setText(inputLabel);
        }
    }

这篇关于计算器一个输入机器人的EditText的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆