我正在android中创建我的第一个计算器应用程序,我的代码运行平稳,但是我希望我的计算器能够在操作完成后接受新的计算。
例如:如果我加1 + 2,然后按下等号按钮,则答案3将返回并显示在我的编辑文本中。我想要一个新号码 编辑文本将清除并显示按下的新数字
听到我的代码:
public class MainActivity extends AppCompatActivity {
Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, multiply, divide, equal, decimal,clear;
EditText calculations;
String result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one = (Button) findViewById(R.id.num1);
two = (Button) findViewById(R.id.num2);
three = (Button) findViewById(R.id.num3);
four = (Button) findViewById(R.id.num4);
five = (Button) findViewById(R.id.num5);
six = (Button) findViewById(R.id.num6);
seven = (Button) findViewById(R.id.num7);
eight = (Button) findViewById(R.id.num8);
nine = (Button) findViewById(R.id.num9);
zero = (Button) findViewById(R.id.num0);
add = (Button) findViewById(R.id.add);
sub = (Button) findViewById(R.id.sub);
multiply = (Button) findViewById(R.id.multiply);
divide = (Button) findViewById(R.id.divide);
equal = (Button) findViewById(R.id.equal);
decimal = (Button) findViewById(R.id.decimalPoint);
clear = (Button) findViewById(R.id.clear);
calculations = (EditText) findViewById(R.id.calculations);
one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("1");
}
});
two.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("2");
}
});
three.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("3");
}
});
four.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("4");
}
});
five.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("5");
}
});
six.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("6");
}
});
seven.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("7");
}
});
eight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("8");
}
});
nine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("9");
}
});
zero.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("0");
}
});
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("+");
}
});
sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("-");
}
});
multiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("×");
}
});
divide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append("÷");
}
});
decimal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.append(".");
}
});
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculations.setText(null);
}
});
equal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String expression = calculations.getText().toString();
if(expression.contains("+")){
String[] numbers = expression.split("\\+");
String no1 = numbers[0];
String no2 = numbers[1];
Double num1 = Double.valueOf(no1);
Double num2 = Double.valueOf(no2);
Double added = num1+num2;
if((added == Math.floor(added)) && !Double.isInfinite(added)) {
result = String.valueOf(added.intValue());
calculations.setText(result);
}
else {
result = String.valueOf(added);
calculations.setText(result);
}
}
if(expression.contains("-")){
String[] numbers = expression.split("\\-");
String no1 = numbers[0];
String no2 = numbers[1];
Double num1 = Double.valueOf(no1);
Double num2 = Double.valueOf(no2);
Double subbed = num1-num2;
if((subbed == Math.floor(subbed)) && !Double.isInfinite(subbed)) {
result = String.valueOf(subbed.intValue());
calculations.setText(result);
}
else {
result = String.valueOf(subbed);
calculations.setText(result);
}
}
if(expression.contains("×")){
String[] numbers = expression.split("\\×");
String no1 = numbers[0];
String no2 = numbers[1];
Double num1 = Double.valueOf(no1);
Double num2 = Double.valueOf(no2);
Double multiplied = num1*num2;
if((multiplied == Math.floor(multiplied)) && !Double.isInfinite(multiplied)) {
result = String.valueOf(multiplied.intValue());
calculations.setText(result);
}
else {
result = String.valueOf(multiplied);
calculations.setText(result);
}
}
if(expression.contains("÷")){
String[] numbers = expression.split("\\÷");
String no1 = numbers[0];
String no2 = numbers[1];
Double num1 = Double.valueOf(no1);
Double num2 = Double.valueOf(no2);
Double divided = num1/num2;
if((divided == Math.floor(divided)) && !Double.isInfinite(divided)) {
result = String.valueOf(divided.intValue());
calculations.setText(result);
}
else {
result = String.valueOf(divided);
calculations.setText(result);
}
}
}
});
}
}