Ich arbeite an einer Taschenrechner-App und habe alle Funktionen unten. Das einzige Problem ist, dass bei der Eingabe einer Gleichung, die zwei arithmetische Operatoren enthält, eine Fehlfunktion auftritt. Zum Beispiel, wenn ich "2 + √9" eingib, gibt es 3 zurück und wenn ich "√9 + 2" eingib, schließt es die Kraft und sagt "ungültiges Doppel √9". Bitte helfen Sie.Rechner verarbeitet nicht zwei Operatorgleichungen
ScientificCalculator.java
String prevAnswer = "";
TextView formulascreen;
TextView resultscreen;
String formuladisplay = "";
String resultdisplay = "";
String result = "";
String operator;
DecimalFormat res = new DecimalFormat("#,###,###,###.######");
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.scientific_calculator, container, false);
formulascreen = (TextView) view.findViewById(R.id.formulaTextView);
updateformuladisplay();
resultscreen = (TextView) view.findViewById(R.id.resultTextView);
updateresultdisplay();
view.findViewById(R.id.btn0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickNumber(v);
}
});
view.findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickNumber(v);
}
});
view.findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickNumber(v);
}
});
view.findViewById(R.id.btn3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickNumber(v);
}
});
view.findViewById(R.id.btn4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickNumber(v);
}
});
view.findViewById(R.id.btn5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickNumber(v);
}
});
view.findViewById(R.id.btn6).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickNumber(v);
}
});
view.findViewById(R.id.btn7).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickNumber(v);
}
});
view.findViewById(R.id.btn8).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickNumber(v);
}
});
view.findViewById(R.id.btn9).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickNumber(v);
}
});
view.findViewById(R.id.btnSqrt).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClicksqrt(v);
}
});
view.findViewById(R.id.btnClear).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickClear(v);
}
});
view.findViewById(R.id.btnDel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickDel(v);
}
});
view.findViewById(R.id.btnAdd).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickOperator(v);
}
});
view.findViewById(R.id.btnMinus).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickOperator(v);
}
});
view.findViewById(R.id.btnDivide).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickOperator(v);
}
});
view.findViewById(R.id.btnMultiply).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickOperator(v);
}
});
view.findViewById(R.id.btnEquals).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickEquals(v);
}
});
view.findViewById(R.id.btnPrevAns).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickAns(v);
}
});
return view;
}
public void onClickEquals(View view) {
getResult();
updateresultdisplay();
}
private boolean getResult() {
if (operator.equals("")) return false;
String[] operation = formuladisplay.split(Pattern.quote(operator));
if (operation.length < 2) return false;
if (operator.equals("√")) {
result = String.valueOf(res.format(sqrtOp(operator, operation[1])));
resultdisplay = result;
prevAnswer = result;
result = "";
}
else {
result = String.valueOf(res.format(simpleOp(operation[0], operation[1], operator)));
resultdisplay = result;
prevAnswer = result;
result = "";
}
return true;
}
public double simpleOp(String a, String b, String op) {
switch (op) {
case "+":
return Double.valueOf(a) + Double.valueOf(b);
case "-":
return Double.valueOf(a) - Double.valueOf(b);
case "x":
return Double.valueOf(a) * Double.valueOf(b);
case "÷":
return Double.valueOf(a)/Double.valueOf(b);
default:
return -1;
}
}
private void updateformuladisplay() {
formulascreen.setText(formuladisplay);
}
private void updateresultdisplay() {
resultscreen.setText(resultdisplay);
}
public void onClicksqrt(View view) {
Button b = (Button) view;
operator = b.getText().toString();
formuladisplay += operator;
updateformuladisplay();
}
public void onClickDel(View view) {
if (formuladisplay.length() >= 1) {
formuladisplay = formuladisplay.substring(0, formuladisplay.length() - 1);
updateformuladisplay();
}
}
private void clear() {
formuladisplay = "";
resultdisplay = "";
}
public void onClickClear(View view) {
clear();
updateformuladisplay();
updateresultdisplay();
}
public void onClickNumber(View view) {
//if (!(result.equals(""))) {
// clear();
//updateformuladisplay();
//}
Button b = (Button) view;
if (formuladisplay.length() >= 0 && formuladisplay.length() <= 17) {
formuladisplay += b.getText();
updateformuladisplay();
}
else {
updateformuladisplay();
}
}
public void onClickOperator(View view) {
Button b = (Button) view;
operator = b.getText().toString();
formuladisplay += operator;
updateformuladisplay();
}
public double sqrtOp(String op, String a) {
switch (op) {
case "√":
return Math.sqrt(Double.valueOf(a));
default:
return -1;
}
}
public void onClickAns(View view) {
Button b = (Button) view;
if (formuladisplay.length() >= 0 && formuladisplay.length() <= 10) {
formuladisplay += prevAnswer;
updateformuladisplay();
}
else {
updateformuladisplay();
}
}
}
Sie haben den Ausdruck in Unter Ausdruck verwenden geteilt dann die mathematische calculaation –
@DixitPanchal berechnen Könnten Sie mir bitte führen, wie ich es umsetzen kann in meinem aktueller Code? Sorry, ich bin ein Neuling –