在android studio中制作一个没有优先级,运行结果保留两位小数的多位数像加减的计算器
时间: 2024-02-18 22:03:53 浏览: 25
好的,我会尽力回答您的问题。首先,我们需要在Android Studio中创建一个新的项目。
接下来,我们需要设计UI界面。我们可以使用LinearLayout来放置我们的控件,例如TextView和Button。我们需要至少放置两个TextView控件,一个用于显示计算结果,另一个用于显示用户的输入。
在代码中,我们可以使用Java中的BigDecimal类来处理浮点数运算,以确保精度。我们可以在OnClick事件中添加操作符和数字按钮的逻辑来执行计算,最后将结果显示在结果TextView中。
下面是一个简单的示例代码,其中包括加、减、乘、除四种运算:
```
import java.math.BigDecimal;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView inputTextView, resultTextView;
private BigDecimal inputNumber, resultNumber;
private String operator = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputTextView = findViewById(R.id.inputTextView);
resultTextView = findViewById(R.id.resultTextView);
findViewById(R.id.button0).setOnClickListener(this);
findViewById(R.id.button1).setOnClickListener(this);
findViewById(R.id.button2).setOnClickListener(this);
findViewById(R.id.button3).setOnClickListener(this);
findViewById(R.id.button4).setOnClickListener(this);
findViewById(R.id.button5).setOnClickListener(this);
findViewById(R.id.button6).setOnClickListener(this);
findViewById(R.id.button7).setOnClickListener(this);
findViewById(R.id.button8).setOnClickListener(this);
findViewById(R.id.button9).setOnClickListener(this);
findViewById(R.id.buttonAdd).setOnClickListener(this);
findViewById(R.id.buttonSubtract).setOnClickListener(this);
findViewById(R.id.buttonMultiply).setOnClickListener(this);
findViewById(R.id.buttonDivide).setOnClickListener(this);
findViewById(R.id.buttonEquals).setOnClickListener(this);
findViewById(R.id.buttonClear).setOnClickListener(this);
inputNumber = new BigDecimal("0");
resultNumber = new BigDecimal("0");
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button0:
inputNumber = inputNumber.multiply(new BigDecimal("10"));
updateInputText("0");
break;
case R.id.button1:
inputNumber = inputNumber.multiply(new BigDecimal("10"));
inputNumber = inputNumber.add(new BigDecimal("1"));
updateInputText("1");
break;
case R.id.button2:
inputNumber = inputNumber.multiply(new BigDecimal("10"));
inputNumber = inputNumber.add(new BigDecimal("2"));
updateInputText("2");
break;
case R.id.button3:
inputNumber = inputNumber.multiply(new BigDecimal("10"));
inputNumber = inputNumber.add(new BigDecimal("3"));
updateInputText("3");
break;
case R.id.button4:
inputNumber = inputNumber.multiply(new BigDecimal("10"));
inputNumber = inputNumber.add(new BigDecimal("4"));
updateInputText("4");
break;
case R.id.button5:
inputNumber = inputNumber.multiply(new BigDecimal("10"));
inputNumber = inputNumber.add(new BigDecimal("5"));
updateInputText("5");
break;
case R.id.button6:
inputNumber = inputNumber.multiply(new BigDecimal("10"));
inputNumber = inputNumber.add(new BigDecimal("6"));
updateInputText("6");
break;
case R.id.button7:
inputNumber = inputNumber.multiply(new BigDecimal("10"));
inputNumber = inputNumber.add(new BigDecimal("7"));
updateInputText("7");
break;
case R.id.button8:
inputNumber = inputNumber.multiply(new BigDecimal("10"));
inputNumber = inputNumber.add(new BigDecimal("8"));
updateInputText("8");
break;
case R.id.button9:
inputNumber = inputNumber.multiply(new BigDecimal("10"));
inputNumber = inputNumber.add(new BigDecimal("9"));
updateInputText("9");
break;
case R.id.buttonAdd:
performOperation("+");
break;
case R.id.buttonSubtract:
performOperation("-");
break;
case R.id.buttonMultiply:
performOperation("*");
break;
case R.id.buttonDivide:
performOperation("/");
break;
case R.id.buttonEquals:
performOperation("=");
break;
case R.id.buttonClear:
inputNumber = new BigDecimal("0");
resultNumber = new BigDecimal("0");
inputTextView.setText("");
resultTextView.setText("");
break;
}
}
private void updateInputText(String text) {
inputTextView.setText(inputNumber.toString());
}
private void performOperation(String op) {
if (operator.equals("")) {
resultNumber = inputNumber;
} else {
switch (operator) {
case "+":
resultNumber = resultNumber.add(inputNumber);
break;
case "-":
resultNumber = resultNumber.subtract(inputNumber);
break;
case "*":
resultNumber = resultNumber.multiply(inputNumber);
break;
case "/":
resultNumber = resultNumber.divide(inputNumber, 2, BigDecimal.ROUND_HALF_UP);
break;
}
}
if (op.equals("=")) {
inputNumber = resultNumber;
operator = "";
} else {
inputNumber = new BigDecimal("0");
operator = op;
}
updateInputText("");
resultTextView.setText(resultNumber.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
}
}
```
希望这个简单的例子能够帮助您实现一个多位数加减运算的计算器。