设计一个安卓计算器,实现基本加减乘除,开方,平方,倒数运算,阶乘运算,求任意底的对数运算,任意数的N次方运算,正弦,余弦,正切,余切运算实现代码
时间: 2023-07-20 12:16:39 浏览: 344
好的,下面是一个简单的安卓计算器的实现代码,包括基本的加减乘除、开方、平方、倒数、阶乘、对数、幂、正弦、余弦、正切和余切等运算:
```java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView display;
private Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
private Button btnAdd, btnSub, btnMul, btnDiv, btnEqu, btnDot, btnClr;
private Button btnSqrt, btnSqr, btnRec, btnFac, btnLog, btnPow, btnSin, btnCos, btnTan, btnCot;
private double num1, num2, result;
private String operator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
display = findViewById(R.id.display);
btn0 = findViewById(R.id.btn0);
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
btn3 = findViewById(R.id.btn3);
btn4 = findViewById(R.id.btn4);
btn5 = findViewById(R.id.btn5);
btn6 = findViewById(R.id.btn6);
btn7 = findViewById(R.id.btn7);
btn8 = findViewById(R.id.btn8);
btn9 = findViewById(R.id.btn9);
btnAdd = findViewById(R.id.btnAdd);
btnSub = findViewById(R.id.btnSub);
btnMul = findViewById(R.id.btnMul);
btnDiv = findViewById(R.id.btnDiv);
btnEqu = findViewById(R.id.btnEqu);
btnDot = findViewById(R.id.btnDot);
btnClr = findViewById(R.id.btnClr);
btnSqrt = findViewById(R.id.btnSqrt);
btnSqr = findViewById(R.id.btnSqr);
btnRec = findViewById(R.id.btnRec);
btnFac = findViewById(R.id.btnFac);
btnLog = findViewById(R.id.btnLog);
btnPow = findViewById(R.id.btnPow);
btnSin = findViewById(R.id.btnSin);
btnCos = findViewById(R.id.btnCos);
btnTan = findViewById(R.id.btnTan);
btnCot = findViewById(R.id.btnCot);
btn0.setOnClickListener(this);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
btn7.setOnClickListener(this);
btn8.setOnClickListener(this);
btn9.setOnClickListener(this);
btnAdd.setOnClickListener(this);
btnSub.setOnClickListener(this);
btnMul.setOnClickListener(this);
btnDiv.setOnClickListener(this);
btnEqu.setOnClickListener(this);
btnDot.setOnClickListener(this);
btnClr.setOnClickListener(this);
btnSqrt.setOnClickListener(this);
btnSqr.setOnClickListener(this);
btnRec.setOnClickListener(this);
btnFac.setOnClickListener(this);
btnLog.setOnClickListener(this);
btnPow.setOnClickListener(this);
btnSin.setOnClickListener(this);
btnCos.setOnClickListener(this);
btnTan.setOnClickListener(this);
btnCot.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String str = display.getText().toString();
switch (v.getId()) {
case R.id.btn0:
display.setText(str + "0");
break;
case R.id.btn1:
display.setText(str + "1");
break;
case R.id.btn2:
display.setText(str + "2");
break;
case R.id.btn3:
display.setText(str + "3");
break;
case R.id.btn4:
display.setText(str + "4");
break;
case R.id.btn5:
display.setText(str + "5");
break;
case R.id.btn6:
display.setText(str + "6");
break;
case R.id.btn7:
display.setText(str + "7");
break;
case R.id.btn8:
display.setText(str + "8");
break;
case R.id.btn9:
display.setText(str + "9");
break;
case R.id.btnAdd:
num1 = Double.parseDouble(str);
operator = "+";
display.setText("");
break;
case R.id.btnSub:
num1 = Double.parseDouble(str);
operator = "-";
display.setText("");
break;
case R.id.btnMul:
num1 = Double.parseDouble(str);
operator = "*";
display.setText("");
break;
case R.id.btnDiv:
num1 = Double.parseDouble(str);
operator = "/";
display.setText("");
break;
case R.id.btnEqu:
num2 = Double.parseDouble(str);
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
result = num1 / num2;
break;
}
display.setText(String.valueOf(result));
break;
case R.id.btnDot:
if (!str.contains(".")) {
display.setText(str + ".");
}
break;
case R.id.btnClr:
display.setText("");
break;
case R.id.btnSqrt:
num1 = Double.parseDouble(str);
result = Math.sqrt(num1);
display.setText(String.valueOf(result));
break;
case R.id.btnSqr:
num1 = Double.parseDouble(str);
result = num1 * num1;
display.setText(String.valueOf(result));
break;
case R.id.btnRec:
num1 = Double.parseDouble(str);
result = 1 / num1;
display.setText(String.valueOf(result));
break;
case R.id.btnFac:
num1 = Double.parseDouble(str);
result = factorial(num1);
display.setText(String.valueOf(result));
break;
case R.id.btnLog:
num1 = Double.parseDouble(str);
result = Math.log10(num1);
display.setText(String.valueOf(result));
break;
case R.id.btnPow:
num1 = Double.parseDouble(str);
operator = "^";
display.setText("");
break;
case R.id.btnSin:
num1 = Double.parseDouble(str);
result = Math.sin(num1);
display.setText(String.valueOf(result));
break;
case R.id.btnCos:
num1 = Double.parseDouble(str);
result = Math.cos(num1);
display.setText(String.valueOf(result));
break;
case R.id.btnTan:
num1 = Double.parseDouble(str);
result = Math.tan(num1);
display.setText(String.valueOf(result));
break;
case R.id.btnCot:
num1 = Double.parseDouble(str);
result = 1 / Math.tan(num1);
display.setText(String.valueOf(result));
break;
}
}
private double factorial(double n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
}
```
需要在布局文件中添加对应的控件,并设置相应的ID和属性。上面的代码实现了基本的计算器功能,可以根据需要进行扩展和优化。
阅读全文
相关推荐













