Android——计算器(Calculator)

步骤:
1:输入一个数储存在变量num1中
2:选择 + - * /任意一个运算符
3:输入另一个数储存在变量num2中
4:并把运算结果保存到变量result中并显示
//如果被除数为0则结果默认显示为0
//在把String类型转化成double时有可能出现NumberFormatException异常,tyr,catch一下就可以了
/activity_main.xml效果图如下/
activity_main.xml
/activity_main.xml代码如下/

<?xml version="1.0" encoding="utf-8"?>




















</RelativeLayout>

/MainActivity.xml代码如下/
public class MainActivity extends AppCompatActivity {
private TextView DisplayBox;
private Button Number0, Number1,Number2,Number3,Number4,Number5,Number6,Number7,Number8,Number9;
private Button Add,Subtract,Multiply,Divide,Equal;// + - * / =
private Button Reset ,Point;
double num1 = 0,num2 = 0;//第一次输入的数和第二次输入的数
double result = 0;//存放运算结果
int Operator;//用于判断是那个运算符

//private String str1,str2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DisplayBox = (TextView) findViewById(R.id.Show);

    Number0 = (Button) findViewById(R.id.Number0);
    Number1 = (Button) findViewById(R.id.Number1);
    Number2 = (Button) findViewById(R.id.Number2);
    Number3 = (Button) findViewById(R.id.Number3);
    Number4 = (Button) findViewById(R.id.Number4);
    Number5 = (Button) findViewById(R.id.Number5);
    Number6 = (Button) findViewById(R.id.Number6);
    Number7 = (Button) findViewById(R.id.Number7);
    Number8 = (Button) findViewById(R.id.Number8);
    Number9 = (Button) findViewById(R.id.Number9);

    Add = (Button) findViewById(R.id.Add);
    Subtract = (Button) findViewById(R.id.Subtract);
    Multiply = (Button) findViewById(R.id.Multiply);
    Divide = (Button) findViewById(R.id.Divide);
    Equal = (Button) findViewById(R.id.Equal);

   Reset = (Button) findViewById(R.id.Clear);
   Point = (Button) findViewById(R.id.Point);

    SetListen();

}
public void SetListen(){
    OnClick onClick = new OnClick();
    Number0.setOnClickListener(onClick);
    Number1.setOnClickListener(onClick);
    Number2.setOnClickListener(onClick);
    Number3.setOnClickListener(onClick);
    Number4.setOnClickListener(onClick);
    Number5.setOnClickListener(onClick);
    Number6.setOnClickListener(onClick);
    Number7.setOnClickListener(onClick);
    Number8.setOnClickListener(onClick);
    Number9.setOnClickListener(onClick);
    Point.setOnClickListener(onClick);

    Add.setOnClickListener(onClick);
    Subtract.setOnClickListener(onClick);
    Multiply.setOnClickListener(onClick);
    Divide.setOnClickListener(onClick);

    Equal.setOnClickListener(onClick);
    Reset.setOnClickListener(onClick);

}
class OnClick implements View.OnClickListener{

    @Override
    public void onClick(View v) {
       switch (v.getId())
       {
               case R.id.Clear:
                   DisplayBox.setText(null);
                   break;
               case R.id.Number0:
                   String str0 = DisplayBox.getText().toString().trim();
                   str0 += "0";
                   DisplayBox.setText(str0);
                   break;
               case R.id.Number1:
                   String str1 = DisplayBox.getText().toString().trim();
                   str1 += "1";
                   DisplayBox.setText(str1);
                   break;
               case R.id.Number2:
                   String str2 = DisplayBox.getText().toString().trim();
                   str2 += "2";
                   DisplayBox.setText(str2);
                   break;
               case R.id.Number3:
                   String str3 = DisplayBox.getText().toString().trim();
                   str3 += "3";
                   DisplayBox.setText(str3);
                   break;
               case R.id.Number4:
                   String str4 = DisplayBox.getText().toString().trim();
                   str4 += "4";
                   DisplayBox.setText(str4);
                   break;
               case R.id.Number5:
                   String str5 = DisplayBox.getText().toString().trim();
                   str5 += "5";
                   DisplayBox.setText(str5);
                   break;
               case R.id.Number6:
                   String str6 = DisplayBox.getText().toString().trim();
                   str6 += "6";
                   DisplayBox.setText(str6);
                   break;
               case R.id.Number7:
                   String str7 = DisplayBox.getText().toString().trim();
                   str7 += "7";
                   DisplayBox.setText(str7);
                   break;
               case R.id.Number8:
                   String str8 = DisplayBox.getText().toString().trim();
                   str8 += "8";
                   DisplayBox.setText(str8);
                   break;
               case R.id.Number9:
                   String str9 = DisplayBox.getText().toString().trim();
                   str9 += "9";
                   DisplayBox.setText(str9);
                   break;
               case R.id.Point:
                   String point = DisplayBox.getText().toString().trim();
                   point += ".";
                   DisplayBox.setText(point);
                   break;

                case R.id.Add:
                   String add = DisplayBox.getText().toString().trim();
                   if (add.equals(null))
                  {
                   return;
                  }
                    try {
                        num1 = Double.valueOf(add);
                    }catch (NumberFormatException e)
                    {
                        e.printStackTrace();
                    }
                  add += "+";
                  DisplayBox.setText(null);
                  Operator = 1;
                  break;
           case R.id.Subtract:
               String subtract = DisplayBox.getText().toString().trim();
               if (subtract.equals(null))
               {
                   return;
               }
               try {
                   num1 = Double.valueOf(subtract);
               }catch (NumberFormatException e)
               {
                   e.printStackTrace();
               }
               subtract += "-";
               DisplayBox.setText(null);
               Operator = 2;
               break;
           case R.id.Multiply:
               String multiply = DisplayBox.getText().toString().trim();
               if (multiply.equals(null))
               {
                   return;
               }
               try {
                   num1 = Double.valueOf(multiply);
               }catch (NumberFormatException e)
               {
                   e.printStackTrace();
               }
               multiply += "*";
               DisplayBox.setText(null);
               Operator = 3;
               break;
           case R.id.Divide:
               String divide = DisplayBox.getText().toString().trim();
               if (divide.equals(null))
               {
                   return;
               }
               try {
                   num1 = Double.valueOf(divide);
               }catch (NumberFormatException e)
               {
                   e.printStackTrace();
               }
               divide += "/";
               DisplayBox.setText(null);
               Operator = 4;
               break;
           case R.id.Equal:
               String equal = DisplayBox.getText().toString().trim();
               try {
                   num2 = Double.valueOf(equal);
               }catch (NumberFormatException e)
               {
                   e.printStackTrace();
               }
               DisplayBox.setText(equal);
               switch (Operator)
               {
                   case 1:
                       result = num1 + num2;
                       DisplayBox.setText(num1 + "+" + num2 + "=" +result);
                       break;
                   case 2:
                       result = num1 - num2;
                       DisplayBox.setText(num1 + "-" + num2 + "=" +result);
                       break;
                   case 3:
                       result = num1 * num2;
                       DisplayBox.setText(num1 + "*" + num2 + "=" +result);
                       break;
                   case 4:
                       if (num2 == 0)
                       {
                           DisplayBox.setText("0");
                       }
                       else {
                           result = num1 / num2;
                           DisplayBox.setText(num1 + "/" + num2 + "=" + result);
                       }
                       break;

               }
               break;
           default:
               result = 0;
               break;
       }
    }
}

}
/效果图/在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/News53231323/article/details/113614034