2017-11-17 5 views
0

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.

+0

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

+0

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. –

+0

das scheint seltsam. 'lastChar == '+' sollte auch funktionieren. – vandale

Antwort

0

Wenn Sie das letzte Zeichen der ‚Berechnung‘ Zeichenfolge lesen möchten, dann würden Sie tun müssen;

Character lastChar = calculation.charAt(calculation.length()-1); 

Beachten Sie die -1 nach Berechnung.Länge().

+0

Ursprünglich hatte ich -1, hat den gleichen Fehler. –