我正在尝试编写一个简单的计算器。我的代码显示没有错误并且也成功上传,但是当我尝试输入数字时,显示始终保持为零。 代码是这样的:编码为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;
}
}
答案 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
。