写一个android的计算器程序
时间: 2023-05-23 20:05:09 浏览: 74
A:
1. 创建一个新的Android项目并设置布局。在布局中添加一些TextView和Button来显示计算器的输入和输出。
2. 创建一个类作为计算器的主要活动,并将该类与布局文件相关联。使用findViewById方法检索TextView和Button。
3. 创建一个类来处理按键单击事件。为每个Button设置OnClickListener,该OnClickListener将由按键单击事件触发。在OnClickListener中,构建你的计算机逻辑。例如,按下“+”时,将输入的数字相加。当用户按下“=”时,显示计算结果。
4. 在计算器类中设置错误检查。例如,如果用户输入的数字太大,则显示错误消息。您还可以在TextView中处理文本,以便用户输入更易于阅读和理解。
5. 优化您的计算器。添加其他功能,例如清除按钮、小数点、正负号等。您还可以使用不同的颜色和字体样式使其更具吸引力。
代码示例:
activity_calculator.xml
```
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="0"
android:textSize="30sp"
android:padding="10dp"
android:gravity="right"/>
<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="0"
android:textSize="40sp"
android:padding="10dp"
android:gravity="right"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="7"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="8"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="9"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:onClick="buttonClicked"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="6"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:onClick="buttonClicked"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*"
android:onClick="buttonClicked"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="."
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:onClick="buttonClicked"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"
android:onClick="buttonClicked"/>
</LinearLayout>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="="
android:onClick="buttonClicked"/>
</LinearLayout>
```
MainActivity.java
```
public class MainActivity extends AppCompatActivity {
private TextView input, result;
private String inputString = "", operator = "";
private double num1 = 0, num2 = 0, res = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
input = findViewById(R.id.input);
result = findViewById(R.id.result);
}
public void buttonClicked(View view) {
switch (view.getId()) {
case R.id.btn0:
handleInput("0");
break;
case R.id.btn1:
handleInput("1");
break;
case R.id.btn2:
handleInput("2");
break;
case R.id.btn3:
handleInput("3");
break;
case R.id.btn4:
handleInput("4");
break;
case R.id.btn5:
handleInput("5");
break;
case R.id.btn6:
handleInput("6");
break;
case R.id.btn7:
handleInput("7");
break;
case R.id.btn8:
handleInput("8");
break;
case R.id.btn9:
handleInput("9");
break;
case R.id.btnAdd:
handleOperator("+");
break;
case R.id.btnSubtract:
handleOperator("-");
break;
case R.id.btnMultiply:
handleOperator("*");
break;
case R.id.btnDivide:
handleOperator("/");
break;
case R.id.btnClear:
clearInput();
break;
case R.id.btnDecimal:
handleInput(".");
break;
case R.id.btnEqual:
handleEqual();
break;
}
}
private void handleInput(String digit) {
inputString += digit;
input.setText(inputString);
}
private void handleOperator(String op) {
if (inputString.equals("")) {
Toast.makeText(getApplicationContext(), "Enter a number first", Toast.LENGTH_SHORT).show();
} else {
num1 = Double.parseDouble(inputString);
inputString = "";
operator = op;
input.setText("");
}
}
private void clearInput() {
inputString = "";
num1 = 0;
num2 = 0;
operator = "";
input.setText("");
result.setText("");
}
private void handleEqual() {
if (inputString.equals("")) {
Toast.makeText(getApplicationContext(), "Enter a number first", Toast.LENGTH_SHORT).show();
} else if (operator.equals("")) {
Toast.makeText(getApplicationContext(), "Select an operator first", Toast.LENGTH_SHORT).show();
} else {
num2 = Double.parseDouble(inputString);
switch (operator) {
case "+":
res = num1 + num2;
break;
case "-":
res = num1 - num2;
break;
case "*":
res = num1 * num2;
break;
case "/":
if (num2 == 0) {
Toast.makeText(getApplicationContext(), "Cannot divide by zero", Toast.LENGTH_SHORT).show();
} else {
res = num1 / num2;
}
break;
}
inputString = "";
num1 = res;
result.setText(Double.toString(res));
}
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)