0

我正在尝试在 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 :



        }


    }
}

如何进行计算?

4

2 回答 2

2

这是一个相当负荷的问题。根据您想要进行的计算数量,它可能会变得更加复杂。会被限制x + y吗?或者您是否希望允许类似的事情3 * (4 + 5) / 6 + 3

后者会使事情变得更加复杂,可能需要您以tree某种形式实现数据类型。这是我在谷歌上找到的一个讨论:http ://www.javaprogrammingforums.com/algorithms-recursion/605-java-calculator.html

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

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

于 2012-10-31T21:08:02.913 回答
2

将您sum1的设置为零onCreate。当用户点击+时,执行:

  1. 添加csum1
  2. 展示sum1
  3. 重置c为零,以便可以输入新数字

当用户点击=时,执行:

  1. 添加csum1
  2. 展示sum1
  3. 重置csum1归零

例如,这允许您点击4 + 5 + 6 =并查看15

于 2012-10-31T21:10:22.317 回答