试图在Android应用程序中为计算器执行计算代码

时间:2012-10-31 21:00:56

标签: java android eclipse calculator

我正在尝试在Android中对计算器应用程序进行排序。我的布局设置得很好,现在我只需要做要计算的代码。应用程序需要在按下时显示数字,然后如果按下+按钮,它将存储第一个数字,将其从屏幕上清除,获取第二个数字,然后将它们一起添加。按下相等按钮时,需要显示结果。

到目前为止我已经

public class Calculator extends Activity {

    public EditText display;  
    TextView screen;
    int a, result;
    int c;
    Button b1;
    int sum1, sum2;
    String r;

    public int getSum1(int sum1) {
        return sum1;
    }

    public int getSum2(int sum2) {
        return sum2;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    public void buttonEventHandler(View v) {
        screen=(EditText)findViewById(R.id.screen);
        b1=(Button)findViewById(R.id.button1);
        switch(v.getId()) {

        case R.id.button1 :
            screen.setText(screen.getText() + "1");
            c = +1;
            break;

        case R.id.button2 : 
            screen.setText(screen.getText() + "2");
            c = +2;
            break;

        case R.id.button3 : 
            screen.setText(screen.getText() + "3");
            c = +3;
            break;

        case R.id.button4 : 
            screen.setText(screen.getText() + "4");
            c = +4;
            break;

        case R.id.button5 : 
            screen.setText(screen.getText() + "5");
            c = +5;
            break;

        case R.id.button6 : 
            screen.setText(screen.getText() + "6");
            c = +6;
            break;

        case R.id.button7 : 
            screen.setText(screen.getText() + "7");
            c = +7;
            break;

        case R.id.button8 : 
            screen.setText(screen.getText() + "8");
            c = +8;
            break;

        case R.id.button9 : 
            screen.setText(screen.getText() + "9");
            c = +9;
            break;

        case R.id.button0 : 
            screen.setText(screen.getText() + "0");
            c = +0;
            break;

        case R.id.buttonC :
            screen.setText(screen.getText() + "");
            c = 0;
            break;

        case R.id.buttonPlus :          


        case R.id.buttonEquals :



        }


    }
}

如何进行计算?

2 个答案:

答案 0 :(得分:2)

这是一个相当有问题的问题。根据您想要进行的计算量,它可以随着时间的推移变得更加复杂。是否仅限于x + y?或者您是否希望允许3 * (4 + 5) / 6 + 3之类的内容?

后者会使事情进一步复杂化,可能需要您以某种形式实现tree数据类型。以下是我在google上发现的讨论:http://www.javaprogrammingforums.com/algorithms-recursion/605-java-calculator.html

如果您要使用前者,则需要允许+将当前值c存储到数据类型中,然后清除屏幕并将c重置为0。按下=后,它将评估总和并将其报告回屏幕。请务必包含任何检查以确保没有值为空。

有关您的意图和计划的更多详细信息可能有助于我和其他人了解您的项目范围。

答案 1 :(得分:2)

sum1中将onCreate设置为零。当用户点按+时,请执行:

  1. c添加到sum1
  2. 显示sum1
  3. c重置为零,以便输入新号码
  4. 当用户点按=时,请执行:

    1. c添加到sum1
    2. 显示sum1
    3. csum1重置为零
    4. 这样您就可以点按4 + 5 + 6 =并查看15,例如。