Android studio设计多功能计算器程序
时间: 2024-06-09 12:05:33 浏览: 111
好的,下面是一个简单的多功能计算器程序的设计思路:
1. 创建一个新的Android Studio 项目,并添加一个活动(Activity)。
2. 在XML布局文件中设计计算器的界面,可以使用按钮、文本框和其他控件。
3. 在Java代码中处理计算器的逻辑。可以使用一个Switch语句来处理输入的操作符,然后计算结果。
4. 添加按钮的点击事件,使它们能够响应用户的输入。
5. 添加一些额外的功能,例如清除输入、清除结果或者反转结果等。
6. 最后,测试你的程序是否可以正确地计算各种不同的数学运算。
下面是一些示例代码,可以帮助你开始创建一个多功能计算器程序:
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">
<TextView
android:id="@+id/result_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="0"/>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="4"
android:rowCount="5">
<Button
android:id="@+id/button_clear"
android:layout_column="0"
android:layout_row="0"
android:text="C"
android:textSize="24sp"/>
<Button
android:id="@+id/button_backspace"
android:layout_column="1"
android:layout_row="0"
android:text="⌫"
android:textSize="24sp"/>
<Button
android:id="@+id/button_divide"
android:layout_column="2"
android:layout_row="0"
android:text="/"
android:textSize="24sp"/>
<Button
android:id="@+id/button_multiply"
android:layout_column="3"
android:layout_row="0"
android:text="×"
android:textSize="24sp"/>
<Button
android:id="@+id/button_7"
android:layout_column="0"
android:layout_row="1"
android:text="7"
android:textSize="24sp"/>
<Button
android:id="@+id/button_8"
android:layout_column="1"
android:layout_row="1"
android:text="8"
android:textSize="24sp"/>
<Button
android:id="@+id/button_9"
android:layout_column="2"
android:layout_row="1"
android:text="9"
android:textSize="24sp"/>
<Button
android:id="@+id/button_minus"
android:layout_column="3"
android:layout_row="1"
android:text="-"
android:textSize="24sp"/>
<Button
android:id="@+id/button_4"
android:layout_column="0"
android:layout_row="2"
android:text="4"
android:textSize="24sp"/>
<Button
android:id="@+id/button_5"
android:layout_column="1"
android:layout_row="2"
android:text="5"
android:textSize="24sp"/>
<Button
android:id="@+id/button_6"
android:layout_column="2"
android:layout_row="2"
android:text="6"
android:textSize="24sp"/>
<Button
android:id="@+id/button_plus"
android:layout_column="3"
android:layout_row="2"
android:text="+"
android:textSize="24sp"/>
<Button
android:id="@+id/button_1"
android:layout_column="0"
android:layout_row="3"
android:text="1"
android:textSize="24sp"/>
<Button
android:id="@+id/button_2"
android:layout_column="1"
android:layout_row="3"
android:text="2"
android:textSize="24sp"/>
<Button
android:id="@+id/button_3"
android:layout_column="2"
android:layout_row="3"
android:text="3"
android:textSize="24sp"/>
<Button
android:id="@+id/button_equals"
android:layout_column="3"
android:layout_row="3"
android:layout_rowSpan="2"
android:text="="
android:textSize="24sp"/>
<Button
android:id="@+id/button_0"
android:layout_column="0"
android:layout_row="4"
android:layout_columnSpan="2"
android:text="0"
android:textSize="24sp"/>
<Button
android:id="@+id/button_dot"
android:layout_column="2"
android:layout_row="4"
android:text="."
android:textSize="24sp"/>
</GridLayout>
</LinearLayout>
```
Java代码:
```java
public class MainActivity extends AppCompatActivity {
private TextView resultTextView;
private String currentNumber = "";
private String currentOperator = "";
private boolean decimalUsed = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultTextView = findViewById(R.id.result_text_view);
Button buttonClear = findViewById(R.id.button_clear);
buttonClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clear();
}
});
Button buttonBackspace = findViewById(R.id.button_backspace);
buttonBackspace.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
backspace();
}
});
Button buttonDivide = findViewById(R.id.button_divide);
buttonDivide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operator("/");
}
});
Button buttonMultiply = findViewById(R.id.button_multiply);
buttonMultiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operator("*");
}
});
Button buttonMinus = findViewById(R.id.button_minus);
buttonMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operator("-");
}
});
Button buttonPlus = findViewById(R.id.button_plus);
buttonPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operator("+");
}
});
Button buttonEquals = findViewById(R.id.button_equals);
buttonEquals.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculate();
}
});
Button buttonDot = findViewById(R.id.button_dot);
buttonDot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addDecimal();
}
});
Button button0 = findViewById(R.id.button_0);
button0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumber("0");
}
});
Button button1 = findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumber("1");
}
});
Button button2 = findViewById(R.id.button_2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumber("2");
}
});
Button button3 = findViewById(R.id.button_3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumber("3");
}
});
Button button4 = findViewById(R.id.button_4);
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumber("4");
}
});
Button button5 = findViewById(R.id.button_5);
button5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumber("5");
}
});
Button button6 = findViewById(R.id.button_6);
button6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumber("6");
}
});
Button button7 = findViewById(R.id.button_7);
button7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumber("7");
}
});
Button button8 = findViewById(R.id.button_8);
button8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumber("8");
}
});
Button button9 = findViewById(R.id.button_9);
button9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumber("9");
}
});
}
private void addNumber(String number) {
currentNumber += number;
updateResult();
}
private void addDecimal() {
if (!decimalUsed) {
decimalUsed = true;
currentNumber += ".";
updateResult();
}
}
private void operator(String operator) {
if (!currentOperator.equals("")) {
calculate();
}
currentOperator = operator;
decimalUsed = false;
currentNumber = "";
}
private void calculate() {
double result = 0.0;
if (currentNumber.equals("")) {
currentNumber = "0";
}
switch (currentOperator) {
case "+":
result = Double.parseDouble(resultTextView.getText().toString()) + Double.parseDouble(currentNumber);
break;
case "-":
result = Double.parseDouble(resultTextView.getText().toString()) - Double.parseDouble(currentNumber);
break;
case "*":
result = Double.parseDouble(resultTextView.getText().toString()) * Double.parseDouble(currentNumber);
break;
case "/":
result = Double.parseDouble(resultTextView.getText().toString()) / Double.parseDouble(currentNumber);
break;
}
currentNumber = Double.toString(result);
currentOperator = "";
decimalUsed = false;
updateResult();
}
private void clear() {
currentNumber = "";
currentOperator = "";
decimalUsed = false;
updateResult();
}
private void backspace() {
if (currentNumber.length() > 0) {
if (currentNumber.substring(currentNumber.length() - 1).equals(".")) {
decimalUsed = false;
}
currentNumber = currentNumber.substring(0, currentNumber.length() - 1);
updateResult();
}
}
private void updateResult() {
if (currentNumber.equals("")) {
resultTextView.setText("0");
} else {
resultTextView.setText(currentNumber);
}
}
}
```
你可以根据自己的需求,添加更多的功能和操作,例如:
- 添加开平方、倒数、正负号等额外的操作
- 添加多种数学函数,例如sin、cos、tan等
- 添加历史记录功能,记录用户输入的表达式和结果
希望这些代码能够帮助你创建一个简单的多功能计算器程序。
阅读全文