用Android 语言写一个简易计算器
时间: 2023-04-03 12:03:22 浏览: 129
好的,我可以回答这个问题。要用 Android 语言写一个简易计算器,你需要先创建一个布局文件,包含数字和运算符按钮。然后在 Java 代码中实现计算器的逻辑,包括输入数字和运算符、计算结果等功能。你可以使用 Android Studio 进行开发,具体实现方法可以参考相关的教程和文档。
相关问题
帮我在android studio用java语言写简易计算器,并用SQLite实现历史查询
好的,我可以帮您完成这个任务。下面是一个简单的示例代码,用于创建一个基本的计算器,并使用SQLite实现历史查询。
首先,您需要在Android Studio中创建一个新项目,然后在布局文件中添加一个EditText用于显示计算结果,以及一些Button用于输入数字和运算符。这里我们使用一个GridLayout来放置所有的按钮,如下所示:
```xml
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:columnCount="4"
android:rowCount="5">
<EditText
android:id="@+id/result_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnSpan="4"
android:layout_gravity="fill_horizontal"
android:layout_weight="1"
android:inputType="numberDecimal"
android:padding="16dp"
android:textSize="24sp" />
<Button
android:id="@+id/btn_clear"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="C" />
<Button
android:id="@+id/btn_sign"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+/-" />
<Button
android:id="@+id/btn_percent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="%" />
<Button
android:id="@+id/btn_divide"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="/" />
<Button
android:id="@+id/btn_7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/btn_8"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="8" />
<Button
android:id="@+id/btn_9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="9" />
<Button
android:id="@+id/btn_multiply"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="*" />
<Button
android:id="@+id/btn_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="4" />
<Button
android:id="@+id/btn_5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="5" />
<Button
android:id="@+id/btn_6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="6" />
<Button
android:id="@+id/btn_minus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="-" />
<Button
android:id="@+id/btn_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1" />
<Button
android:id="@+id/btn_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2" />
<Button
android:id="@+id/btn_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3" />
<Button
android:id="@+id/btn_plus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+" />
<Button
android:id="@+id/btn_0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="0" />
<Button
android:id="@+id/btn_dot"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="." />
<Button
android:id="@+id/btn_equals"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="=" />
</GridLayout>
```
接下来,我们在MainActivity.java文件中编写逻辑代码。首先,我们需要定义一些变量来存储当前输入的数字和运算符,以及计算结果。我们还需要使用SQLiteOpenHelper类来创建和管理数据库。这里我们定义一个名为"history"的表,用于存储计算历史记录。
```java
public class MainActivity extends AppCompatActivity {
private EditText resultText;
private String currentNumber = "";
private String currentOperator = "";
private double currentResult = 0.0;
private SQLiteDatabase database;
private static final String DB_NAME = "history.db";
private static final int DB_VERSION = 1;
private static final String TABLE_NAME = "history";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_EXPRESSION = "expression";
private static final String COLUMN_RESULT = "result";
private static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + " (" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_EXPRESSION + " TEXT, " +
COLUMN_RESULT + " REAL);";
```
在onCreate()方法中,我们需要获取EditText和所有Button的引用,并为它们设置一个点击监听器。当用户点击数字或运算符按钮时,我们将该值附加到当前数字或运算符字符串上。当用户点击“C”按钮时,我们将所有变量重置为默认值。当用户点击“=”按钮时,我们将执行计算,并将结果显示在EditText中。同时,我们还将保存该计算的历史记录到数据库中。
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultText = findViewById(R.id.result_text);
Button btnClear = findViewById(R.id.btn_clear);
Button btnSign = findViewById(R.id.btn_sign);
Button btnPercent = findViewById(R.id.btn_percent);
Button btnDivide = findViewById(R.id.btn_divide);
Button btn7 = findViewById(R.id.btn_7);
Button btn8 = findViewById(R.id.btn_8);
Button btn9 = findViewById(R.id.btn_9);
Button btnMultiply = findViewById(R.id.btn_multiply);
Button btn4 = findViewById(R.id.btn_4);
Button btn5 = findViewById(R.id.btn_5);
Button btn6 = findViewById(R.id.btn_6);
Button btnMinus = findViewById(R.id.btn_minus);
Button btn1 = findViewById(R.id.btn_1);
Button btn2 = findViewById(R.id.btn_2);
Button btn3 = findViewById(R.id.btn_3);
Button btnPlus = findViewById(R.id.btn_plus);
Button btn0 = findViewById(R.id.btn_0);
Button btnDot = findViewById(R.id.btn_dot);
Button btnEquals = findViewById(R.id.btn_equals);
DatabaseHelper dbHelper = new DatabaseHelper(this);
database = dbHelper.getWritableDatabase();
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentNumber = "";
currentOperator = "";
currentResult = 0.0;
resultText.setText("");
}
});
btnSign.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (currentNumber.isEmpty()) {
currentNumber = "-";
} else if (currentNumber.equals("-")) {
currentNumber = "";
} else {
double number = Double.parseDouble(currentNumber);
number = -number;
currentNumber = Double.toString(number);
}
resultText.setText(currentNumber);
}
});
btnPercent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.isEmpty()) {
double number = Double.parseDouble(currentNumber);
number /= 100.0;
currentNumber = Double.toString(number);
resultText.setText(currentNumber);
}
}
});
btnDivide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.isEmpty()) {
currentOperator = "/";
currentResult = Double.parseDouble(currentNumber);
currentNumber = "";
resultText.setText("");
}
}
});
btn7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("7");
}
});
btn8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("8");
}
});
btn9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("9");
}
});
btnMultiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.isEmpty()) {
currentOperator = "*";
currentResult = Double.parseDouble(currentNumber);
currentNumber = "";
resultText.setText("");
}
}
});
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("4");
}
});
btn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("5");
}
});
btn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("6");
}
});
btnMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.isEmpty()) {
currentOperator = "-";
currentResult = Double.parseDouble(currentNumber);
currentNumber = "";
resultText.setText("");
}
}
});
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("1");
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("2");
}
});
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("3");
}
});
btnPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.isEmpty()) {
currentOperator = "+";
currentResult = Double.parseDouble(currentNumber);
currentNumber = "";
resultText.setText("");
}
}
});
btn0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("0");
}
});
btnDot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.contains(".")) {
currentNumber += ".";
resultText.setText(currentNumber);
}
}
});
btnEquals.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.isEmpty()) {
double number = Double.parseDouble(currentNumber);
if (currentOperator.equals("+")) {
currentResult += number;
} else if (currentOperator.equals("-")) {
currentResult -= number;
} else if (currentOperator.equals("*")) {
currentResult *= number;
} else if (currentOperator.equals("/")) {
currentResult /= number;
} else {
currentResult = number;
}
currentNumber = Double.toString(currentResult);
resultText.setText(currentNumber);
ContentValues values = new ContentValues();
values.put(COLUMN_EXPRESSION, currentOperator + number);
values.put(COLUMN_RESULT, currentResult);
database.insert(TABLE_NAME, null, values);
}
}
});
}
private void appendNumber(String digit) {
currentNumber += digit;
resultText.setText(currentNumber);
}
```
最后,我们需要编写一个SQLiteOpenHelper类来创建和管理数据库。我们将在onCreate()方法中执行CREATE_TABLE语句,以创建一个名为“history”的表,用于存储计算历史记录。
```java
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
```
现在,您可以在Android模拟器或真实设备上运行该应用程序,并测试它是否按预期工作。您可以使用历史记录功能来查看以前的计算结果,并在需要时重新执行它们。
Android Studio简易计算器
Android Studio是一款专门用于开发Android应用程序的集成开发环境(IDE)。使用Android Studio可以方便地进行Android应用程序的设计、编码和调试。下面是一个简单的Android Studio简易计算器的示例:
1. 首先,在Android Studio中创建一个新的项目,并设置项目名称和存储位置。
2. 在项目的布局文件中,使用XML语言设计计算器的界面。可以使用按钮、文本框等控件来实现计算器的输入和显示功能。
3. 在Java代码中,编写计算器的逻辑代码。可以使用Java语言来实现加减乘除等基本计算功能。例如,可以使用if语句和switch语句来判断用户的输入,并根据输入执行相应的计算操作。
4. 在Android Studio中,使用模拟器或真机进行调试和测试。可以通过点击按钮来触发计算操作,并在文本框中显示计算结果。
下面是一个简单的示例代码,演示了如何在Android Studio中实现一个简易计算器:
```java
// MainActivity.java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText etNum1, etNum2;
private Button btnAdd, btnSubtract, btnMultiply, btnDivide;
private TextView tvResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etNum1 = findViewById(R.id.et_num1);
etNum2 = findViewById(R.id.et_num2);
btnAdd = findViewById(R.id.btn_add);
btnSubtract = findViewById(R.id.btn_subtract);
btnMultiply = findViewById(R.id.btn_multiply);
btnDivide = findViewById(R.id.btn_divide);
tvResult = findViewById(R.id.tv_result);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int num1 = Integer.parseInt(etNum1.getText().toString());
int num2 = Integer.parseInt(etNum2.getText().toString());
int result = num1 + num2;
tvResult.setText(String.valueOf(result));
}
});
// 省略其他按钮的点击事件处理代码,如减法、乘法、除法等
}
}
```
```xml
<!-- activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/et_num1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入第一个数字" />
<EditText
android:id="@+id/et_num2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入第二个数字" />
<Button
android:id="@+id/btn_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="加法" />
<!-- 省略其他按钮和文本框的布局代码 -->
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="计算结果将显示在这里" />
</LinearLayout>
```
请注意,这只是一个简单的示例,实际的计算器功能可能更复杂。你可以根据自己的需求进行扩展和修改。
阅读全文