简单计算器始终显示“0”

时间:2014-01-02 08:16:24

标签: android

我正在尝试编写一个简单的计算器。我的代码显示没有错误并且也成功上传,但是当我尝试输入数字时,显示始终保持为零。 代码是这样的:编码为android 2.3.3

public class MainActivity extends Activity {
    TextView res;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        res = (TextView)findViewById(R.id.textView1);
        res.setText("0");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    static boolean empty = true;

    public void num_clicked(View sender)
    {
        Button bt = (Button)sender;
        if(res.getText().length() > 8) return;
        if(empty)
        {   
            if(bt.getText().toString().equals("0")) return;
            res.setText(bt.getText());
            empty = false;
        }
        else
        {
            res.append(bt.getText());
        }
    }

    static int acc = 0;
    static short op;

    public void op_clicked(View sender)
    {  
        Button bt = (Button)sender;
        switch(op)
        {
            case 0:
                acc+=Integer.parseInt(res.getText().toString());
                break;
            case 1:
                acc-=Integer.parseInt(res.getText().toString());
                break;  
            case 2:
                acc*=Integer.parseInt(res.getText().toString());
                break;  
            case 3:
                acc/=Integer.parseInt(res.getText().toString());
                break;  
        }
        res.setText(Integer.toString(acc));

        if(bt.getText().toString().equals("+")) op = 0;
        if(bt.getText().toString().equals("-")) op = 1;
        if(bt.getText().toString().equals("*")) op = 2;
        if(bt.getText().toString().equals("/")) op = 3;

        empty = true;
    }
}

pics of calculator

2 个答案:

答案 0 :(得分:1)

首先,底部有一些错误的代码:

if(bt.getText().toString().equals("+")) op = 0;
if(bt.getText().toString().equals("+")) op = 1;
if(bt.getText().toString().equals("+")) op = 2;
if(bt.getText().toString().equals("+")) op = 3;

empty = true;

因为您每次都会测试"+",所以当输入加号时op始终为3,否则为0

其次,无论如何,您最后都会将empty重置为true。因此,这将显示0

if(empty)
{   
    if(bt.getText().toString().equals("0")) return;
    res.setText(bt.getText());
    empty = false;
}

我不知道你是如何设置XML布局的,所以我不知道按钮监听器是如何正确实现的。这是你问题的开始。


变量acc仅在您的switch语句中被触及,因此默认情况下它为0/=*=仍会保留{{1} }}。那是个问题。

这段代码可能也错了:

0

因为您在之后为switch(op) { case 0: acc+=Integer.parseInt(res.getText().toString()); break; case 1: acc-=Integer.parseInt(res.getText().toString()); break; case 2: acc*=Integer.parseInt(res.getText().toString()); break; case 3: acc/=Integer.parseInt(res.getText().toString()); break; } res.setText(Integer.toString(acc)); if(bt.getText().toString().equals("+")) op = 0; if(bt.getText().toString().equals("-")) op = 1; if(bt.getText().toString().equals("*")) op = 2; if(bt.getText().toString().equals("/")) op = 3; 分配了一个值,因此您已经使用了op的switch语句。将if语句放在switch语句之前。

答案 1 :(得分:0)

您似乎没有使用setOnClickListener来设置按钮的OnClickListener。或者在您的布局文件中写下android:onClick