public class MainActivity extends Activity implements OnClickListener{
private Button bt_c,bt_del,bt_chu,bt_cheng,bt_jia,bt_jian,bt_0,bt_1,bt_2,bt_3,
bt_4,bt_5,bt_6,bt_7,bt_8,bt_9,bt_dengyu,bt_dian;
private EditText et_input;
private boolean clear_flag;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first);
bt_c=(Button) findViewById(R.id.bt_c);
bt_del=(Button) findViewById(R.id.bt_del);
bt_chu=(Button) findViewById(R.id.bt_chu);
bt_cheng=(Button) findViewById(R.id.bt_cheng);
bt_jia=(Button) findViewById(R.id.bt_jia);
bt_jian=(Button) findViewById(R.id.bt_jian);
bt_0=(Button) findViewById(R.id.bt_0);
bt_1=(Button) findViewById(R.id.bt_1);
bt_2=(Button) findViewById(R.id.bt_2);
bt_3=(Button) findViewById(R.id.bt_3);
bt_4=(Button) findViewById(R.id.bt_4);
bt_5=(Button) findViewById(R.id.bt_5);
bt_6=(Button) findViewById(R.id.bt_6);
bt_7=(Button) findViewById(R.id.bt_7);
bt_8=(Button) findViewById(R.id.bt_8);
bt_9=(Button) findViewById(R.id.bt_9);
bt_dengyu=(Button) findViewById(R.id.bt_dengyu);
bt_dian=(Button) findViewById(R.id.bt_dian);
et_input=(EditText) findViewById(R.id.input);
bt_0.setOnClickListener(this);
bt_1.setOnClickListener(this);
bt_2.setOnClickListener(this);
bt_3.setOnClickListener(this);
bt_4.setOnClickListener(this);
bt_5.setOnClickListener(this);
bt_6.setOnClickListener(this);
bt_7.setOnClickListener(this);
bt_8.setOnClickListener(this);
bt_9.setOnClickListener(this);
bt_dian.setOnClickListener(this);
bt_dengyu.setOnClickListener(this);
bt_c.setOnClickListener(this);
bt_del.setOnClickListener(this);
bt_jia.setOnClickListener(this);
bt_jian.setOnClickListener(this);
bt_cheng.setOnClickListener(this);
bt_chu.setOnClickListener(this);
et_input.setOnClickListener(this);
}
public void onClick(View v) {
// TODO Auto-generated method stub
String str=et_input.getText().toString();//获开屏幕显示的数据
switch (v.getId()) {
case R.id.bt_0:
case R.id.bt_1:
case R.id.bt_2:
case R.id.bt_3:
case R.id.bt_4:
case R.id.bt_5:
case R.id.bt_6:
case R.id.bt_7:
case R.id.bt_8:
case R.id.bt_9:
case R.id.bt_dian:
if(clear_flag){
clear_flag=false;
str="";
et_input.setText("");
}
et_input.setText(str+((Button)v).getText());
//按那个键就会在屏幕上显示出之前str加上按得那个键值一起显示
break;
case R.id.bt_jia:
case R.id.bt_jian:
case R.id.bt_cheng:
case R.id.bt_chu:
if(clear_flag){
clear_flag=false;
str="";
et_input.setText("");
}
et_input.setText(str+" "+((Button)v).getText()+" ");
break;
case R.id.bt_dengyu:
getResult();
break;
case R.id.bt_del:
if(clear_flag){
clear_flag=false;
str="";
et_input.setText("");
}
else if(str!=null&&str!=""){
et_input.setText(str.substring(0,str.length()-1));
//如果str中不为空并且不是空字符串,就将str减一位显示出来
}
break;
case R.id.bt_c:
clear_flag=false;
str="";
et_input.setText("");//按C键就显示空字符串
break;
default:
break;
}
}
private void getResult(){
String exp=et_input.getText().toString();//获开屏幕显示的数据
if(exp==null||exp.equals("")){
return;
}
if(!exp.contains(" ")){
return;
}
if(clear_flag){
clear_flag=false;
return;
}
clear_flag=true;
double r=0;
int space =exp.indexOf(' ');//用于搜索空格位置
String s1 = exp.substring(0, space);//s1用于保存第一个运算数
String op = exp.substring(space + 1, space + 2);//op用于保存运算符
String s2 = exp.substring(space + 3);//s2用于保存第二个运算数
if(!s1.equals("")&&!s2.equals("")){
double arg1 = Double.parseDouble(s1);//将运算数从string转换为Single
double arg2 = Double.parseDouble(s2);
if(op.equals("+")){
r=arg1+arg2;
}else if (op.equals("-")) {
r=arg1-arg2;
}else if (op.equals("×")) {
r=arg1*arg2;
}else if (op.equals("÷")) {
if(arg2==0){
r=0;
}
else{
r=arg1/arg2;
}
}
if(!s1.contains(".")&&!s2.contains(".")){
int result=(int) r;
et_input.setText(result+"");//如果都没小数点,就显示整数
}else {
et_input.setText(r+"");//否则,已小数点形式显示
}
}else if(!s1.equals("")&&s2.equals("")){
et_input.setText(exp);
}else if (s1.equals("")&&!s2.equals("")) {
double arg2 = Double.parseDouble(s2);
if(op.equals("+")){
r=0+arg2;
}else if (op.equals("-")) {
r=0-arg2;
}else if (op.equals("×")) {
r=0;
}else if (op.equals("÷")) {
r=0;
}
if(!s2.contains(".")){
int result=(int) r;
et_input.setText(result+"");//如果都没小数点,就显示整数
}else {
et_input.setText(r+"");//否则,已小数点形式显示
}
}else {
et_input.setText("");
}
}
} |