Ich habe eine Plus-Taste auf meinem Rechner. Die erste Anweisung besteht darin, ein "+" - Zeichen hinzuzufügen, wenn keine Eingabe erfolgt (die Berechnungszeichenfolgenvariable enthält alle Eingaben des Benutzers). Die zweite Anweisung soll verhindern, dass der Benutzer 2 "+" -Zeichen in einer Zeile eintippt, indem er "" hinzufügt.Android-Rechner - Plus-Taste
Es gibt mir einen Fehler: java.lang.StringIndexOutOfBoundsException: length=0; index=0
.
btnMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
calculation = tvCalculation.getText().toString();
Character lastChar = calculation.charAt(calculation.length());
//App negeert deze statements
if(calculation.length() >= 0) {
tvCalculation.setText(calculation + "-");
} else if (lastChar.toString().equals("+")) {
tvCalculation.setText(calculation + "");
}
}
});
Jemand hat mir gesagt, es ist wegen der toString()
in Zeile 4.
Der Fehler ist, wenn die Zeichenfolge leer ist (Länge: 0). Was denkst du wird passieren, wenn du versuchst, das letzte Zeichen einer leeren Saite zu finden? Außerdem sollten Sie char anstelle von Character verwenden und es mit char-Literalen vergleichen, die einfache statt doppelte Anführungszeichen verwenden. – vandale
Wenn ich char verwende, kann ich aus irgendeinem Grund nicht == oder .equals() verwenden, also muss ich Character behalten. Und wenn die Zeichenfolge leer ist, wird Anweisung 1 damit umgehen. –
das scheint seltsam. 'lastChar == '+' sollte auch funktionieren. – vandale