andriod studio实现简单计算器代码
时间: 2023-07-26 19:03:33 浏览: 45
以下是一个简单的 Android Studio 计算器应用程序的代码:
首先,在 activity_main.xml 文件中添加以下代码:
```xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.calculator.MainActivity">
<TextView
android:id="@+id/resultTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="20dp"
android:gravity="center
相关问题
Android studio实现科学计算器代码
以下是一个简单的科学计算器的 Android Studio 代码实现示例:
1. 首先,在 XML 布局文件中创建一个包含所有按钮的界面。
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:inputType="text" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_sin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="sin" />
<Button
android:id="@+id/button_cos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="cos" />
<Button
android:id="@+id/button_tan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="tan" />
<Button
android:id="@+id/button_pow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="^" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="7" />
<Button
android:id="@+id/button_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="8" />
<Button
android:id="@+id/button_9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="9" />
<Button
android:id="@+id/button_divide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4" />
<Button
android:id="@+id/button_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5" />
<Button
android:id="@+id/button_6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="6" />
<Button
android:id="@+id/button_multiply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1" />
<Button
android:id="@+id/button_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2" />
<Button
android:id="@+id/button_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3" />
<Button
android:id="@+id/button_minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0" />
<Button
android:id="@+id/button_clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C" />
<Button
android:id="@+id/button_dot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="." />
<Button
android:id="@+id/button_plus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+" />
</LinearLayout>
<Button
android:id="@+id/button_equal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="=" />
</LinearLayout>
```
2. 在 Activity 中实现所有按钮的点击事件并处理计算逻辑。
```java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText editText;
private double value1 = Double.NaN;
private double value2;
private static final String ADDITION = "+";
private static final String SUBTRACTION = "-";
private static final String MULTIPLICATION = "*";
private static final String DIVISION = "/";
private String CURRENT_ACTION;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
Button button0 = findViewById(R.id.button_0);
Button button1 = findViewById(R.id.button_1);
Button button2 = findViewById(R.id.button_2);
Button button3 = findViewById(R.id.button_3);
Button button4 = findViewById(R.id.button_4);
Button button5 = findViewById(R.id.button_5);
Button button6 = findViewById(R.id.button_6);
Button button7 = findViewById(R.id.button_7);
Button button8 = findViewById(R.id.button_8);
Button button9 = findViewById(R.id.button_9);
Button buttonDot = findViewById(R.id.button_dot);
Button buttonClear = findViewById(R.id.button_clear);
Button buttonPlus = findViewById(R.id.button_plus);
Button buttonMinus = findViewById(R.id.button_minus);
Button buttonMultiply = findViewById(R.id.button_multiply);
Button buttonDivide = findViewById(R.id.button_divide);
Button buttonEqual = findViewById(R.id.button_equal);
Button buttonSin = findViewById(R.id.button_sin);
Button buttonCos = findViewById(R.id.button_cos);
Button buttonTan = findViewById(R.id.button_tan);
Button buttonPow = findViewById(R.id.button_pow);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + "1");
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + "2");
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + "3");
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + "4");
}
});
button5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + "5");
}
});
button6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + "6");
}
});
button7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + "7");
}
});
button8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + "8");
}
});
button9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + "9");
}
});
button0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + "0");
}
});
buttonDot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText(editText.getText() + ".");
}
});
buttonClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
value1 = Double.NaN;
value2 = Double.NaN;
editText.setText("");
}
});
buttonPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
computeCalculation();
CURRENT_ACTION = ADDITION;
editText.setText(String.valueOf(value1) + "+");
}
});
buttonMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
computeCalculation();
CURRENT_ACTION = SUBTRACTION;
editText.setText(String.valueOf(value1) + "-");
}
});
buttonMultiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
computeCalculation();
CURRENT_ACTION = MULTIPLICATION;
editText.setText(String.valueOf(value1) + "*");
}
});
buttonDivide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
computeCalculation();
CURRENT_ACTION = DIVISION;
editText.setText(String.valueOf(value1) + "/");
}
});
buttonEqual.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
computeCalculation();
editText.setText(String.valueOf(value1));
value1 = Double.NaN;
}
});
buttonSin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double value = Double.parseDouble(editText.getText().toString());
double result = Math.sin(Math.toRadians(value));
editText.setText(String.valueOf(result));
}
});
buttonCos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double value = Double.parseDouble(editText.getText().toString());
double result = Math.cos(Math.toRadians(value));
editText.setText(String.valueOf(result));
}
});
buttonTan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double value = Double.parseDouble(editText.getText().toString());
double result = Math.tan(Math.toRadians(value));
editText.setText(String.valueOf(result));
}
});
buttonPow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
computeCalculation();
CURRENT_ACTION = "pow";
editText.setText(String.valueOf(value1) + "^");
}
});
}
private void computeCalculation() {
if (!Double.isNaN(value1)) {
value2 = Double.parseDouble(editText.getText().toString());
if (CURRENT_ACTION == ADDITION)
value1 = this.value1 + value2;
else if (CURRENT_ACTION == SUBTRACTION)
value1 = this.value1 - value2;
else if (CURRENT_ACTION == MULTIPLICATION)
value1 = this.value1 * value2;
else if (CURRENT_ACTION == DIVISION)
value1 = this.value1 / value2;
else if (CURRENT_ACTION == "pow")
value1 = Math.pow(value1, value2);
} else {
try {
value1 = Double.parseDouble(editText.getText().toString());
} catch (Exception e) {
}
}
}
}
```
这样,你就可以运行该应用程序并使用该科学计算器进行计算了。
android studio实现简易计算器
### 回答1:
好的,下面是简易计算器的实现步骤:
1. 创建一个新的Android Studio项目,并在布局文件中添加一个TextView和多个Button。
2. 在MainActivity.java文件中,定义一个字符串变量来存储用户输入的数字和操作符,并在每个按钮的点击事件中更新该变量。
3. 创建一个名为calculate()的方法,该方法将用户输入的字符串解析为数字和操作符,并执行相应的计算。最后,将结果显示在TextView中。
4. 在每个按钮的点击事件中调用calculate()方法,以便在用户按下“=”按钮时执行计算。
5. 运行应用程序并测试它是否按预期工作。
希望这能帮助到你!
### 回答2:
Android Studio 是常用的Android应用程序开发环境,利用该工具可以开发完整的Android应用程序,其中也包括实现简易计算器。下面我们就来介绍如何通过 Android Studio 实现简易计算器。
1.创建新的Android项目:我们打开Android Studio,选择“Start a new Android Studio project”,该选项将指导我们创建一个新的Android项目。
2.设计用户界面:我们需要使用XML文件描述计算器的用户界面,主要包含数字、运算符等键,在这里,我们需要利用Android提供的界面设计工具 -- Android Studio Design View 。
3.编写Java代码:在Android Studio中,Java代码对应着Java类文件,因此我们需要新建一个类文件,将所有的计算逻辑代码编写在其中。
4.添加计算器逻辑:我们需要编写代码,实现基本运算:加、减、乘、除、取余等。
5.添加响应事件:我们需要为计算器中的数字、运算符等键添加响应事件,实现点击后数字和运算符的显示。
6.测试程序:我们需要在模拟器或者真机上测试我们开发的计算器程序,保证其在使用时可以正常运行。
综上所述,通过以上步骤,我们可以利用Android Studio实现一个简单的计算器。编写一个计算器的过程中,需要了解常见的布局,如LinearLayout、RelativeLayout等,并可以利用著名的MVP模式,将View与Presenter分离,提高代码的可读性和可维护性。此外,还需要掌握如何实现适应不同分辨率的布局,保证在各种机型上都能够良好地运行。
### 回答3:
Android Studio 是一款强大的 Android 应用开发软件,可以帮助我们创建各种 Android 应用,包括计算器应用。下面将详细介绍如何利用 Android Studio 实现简易计算器。
第一步:创建项目
在 Android Studio 中点击“Start a new Android Studio project”,选择一个名字和保存路径,接着选择 Empty Activity,点击“Finish”创建项目。
第二步:设计计算器界面
在 activity_main.xml 文件中,我们可以选择布局元素创建界面。在这里,我们使用LinearLayout作为容器,从而创建我们的界面元素。具体的代码如下:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:background="@color/cardview_dark_background"
android:gravity="right"
android:textAppearance="?android:textAppearanceLarge"
android:textColor="@color/white"
android:textSize="50sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="4" >
<Button
android:id="@+id/btn_clear"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_weight="1"
android:background="@color/cardview_dark_background"
android:text="C"
android:textAllCaps="false"
android:textAppearance="?android:textAppearanceLarge"
android:textColor="@color/white"
android:textSize="20sp" />
......
</LinearLayout>
</LinearLayout>
```
这里我们用 LinearLayout 创建一个垂直方向的布局,然后再在垂直布局中用 LinearLayout 创建一个水平方向的布局。在这个水平方向的布局中添加数值、运算符和清除按钮,具体代码如下:
```
<Button
android:id="@+id/btn_clear"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_weight="1"
android:background="@color/cardview_dark_background"
android:text="C"
android:textAllCaps="false"
android:textAppearance="?android:textAppearanceLarge"
android:textColor="@color/white"
android:textSize="20sp" />
<TextView
android:id="@+id/btn_divide"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_weight="1"
android:background="@color/cardview_dark_background"
android:gravity="center"
android:text="/"
android:textAppearance="?android:textAppearanceLarge"
android:textColor="@color/white"
android:textSize="20sp" />
<Button
android:id="@+id/btn_multiply"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_weight="1"
android:background="@color/cardview_dark_background"
android:text="*"
android:textAllCaps="false"
android:textAppearance="?android:textAppearanceLarge"
android:textColor="@color/white"
android:textSize="20sp" />
......
```
第三步:实现计算器逻辑
在 MainActivity 类中实现计算器的逻辑。首先,我们需要定义一个数字输入框(TextView)用来显示操作数,同时在代码中对输入数字和操作符进行处理,并显示结果。
具体代码如下:
```
public class MainActivity extends AppCompatActivity {
private TextView tvInput;
private String lastOperator = "";
private double operand1 = Double.NaN;
private double operand2;
private final char ADDITION = '+';
private final char SUBTRACTION = '-';
private final char MULTIPLICATION = '*';
private final char DIVISION = '/';
private final char EQUALS = '=';
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvInput = findViewById(R.id.tv_input);
tvInput.setText("");
}
public void onButtonClick(View view){
Button btn = (Button)view;
String str = btn.getText().toString();
if(str.equals("C")){
tvInput.setText("");
lastOperator="";
operand1=Double.NaN;
}else if(str.equals("+/-")){
double value = Double.parseDouble(tvInput.getText().toString());
value = -value;
tvInput.setText(String.valueOf(value));
}else if(str.equals("%")){
if(lastOperator.equals("") && !tvInput.getText().toString().equals("")){
double value = Double.parseDouble(tvInput.getText().toString());
value = value/100;
tvInput.setText(String.valueOf(value));
}
}else if(str.equals(".")){
if(lastOperator.equals("") && !tvInput.getText().toString().contains(".")){
tvInput.append(".");
}
}else if(isOperator(str.charAt(0))){
if(!lastOperator.equals("") && tvInput.getText().toString().equals("")){
return;
}
if(Double.isNaN(operand1)){
operand1 = Double.parseDouble(tvInput.getText().toString());
}else{
operand2 = Double.parseDouble(tvInput.getText().toString());
switch(lastOperator){
case "+":
operand1 = operand1 + operand2;
break;
case "-":
operand1 = operand1 - operand2;
break;
case "*":
operand1 = operand1 * operand2;
break;
case "/":
operand1 = operand1 / operand2;
break;
case "=":
break;
}
}
lastOperator = String.valueOf(str.charAt(0));
tvInput.setText("");
}else if(str.equals("=")){
if(lastOperator.equals("")) return;
if(Double.isNaN(operand1)){
operand1 = Double.parseDouble(tvInput.getText().toString());
}else{
operand2 = Double.parseDouble(tvInput.getText().toString());
switch(lastOperator){
case "+":
operand1 = operand1 + operand2;
break;
case "-":
operand1 = operand1 - operand2;
break;
case "*":
operand1 = operand1 * operand2;
break;
case "/":
operand1 = operand1 / operand2;
break;
case "=":
break;
}
}
lastOperator = "=";
tvInput.setText(String.valueOf(operand1));
operand1 = Double.NaN;
}else{
tvInput.append(str);
}
}
public boolean isOperator(char c){
return (c==ADDITION || c==SUBTRACTION || c== MULTIPLICATION || c == DIVISION);
}
}
```
在这个代码中,“C”按钮可以清除所有输入,“+/-”按钮可以将数字转换成负数,“%”按钮可以将数字转换成百分数,“.”按钮可以添加小数点,“=”按钮可以计算输入并输出结果。
最后,在 mainifests/AndroidManifest.xml 文件中增加声明,以允许用户在应用内打开横屏模式。
```
<activity android:name=".MainActivity"
android:screenOrientation="sensorLandscape">
</activity>
```
现在我们已经创建了一个简单的计算器应用程序。当用户在应用中输入一个算术表达式,该程序会自动计算结果并在应用窗口中显示这个结果。当然,这还只是计算器的基本功能,您还可以添加各种其他功能,如科学计算器等等。希望这篇文章能够帮助你了解如何使用 Android Studio 来实现一个简单的计算器。