2016-06-30 8 views
1

Hier zu Kapital ist der Ausschnitt, in dem ich den Fehler auftreten: `Script erste Zeichen der ersten beiden Wörter durch Spaltung Rückkehr java.lang.StringIndexOutOfBoundsException

String[] splitbyspace = search.split(" "); 

if(splitbyspace.length > 2){ 
    String spacesplitted = splitbyspace[0].substring(0, 1).toUpperCase() + splitbyspace[0].substring(1) + " " + splitbyspace[1].substring(0, 1).toUpperCase() + splitbyspace[1].substring(1); 
    searchIdx = content.indexOf(spacesplitted); 

    if(searchIdx != -1){ 
     String sentence = content.substring(searchIdx+search.length()+1, content.indexOf('.', searchIdx)); 
     sentence = sentence.replace("\"", ""); 
     sentences.add(sentence); 
    } 
} 

Und hier ist der Fehler:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1 
    at java.lang.String.substring(String.java:1963) 
    at Untitled2.taste(Untitled2.java:127) 
    at Untitled2.answer(Untitled2.java:69) 
    at Untitled2.main(Untitled2.java:29) 

Was mache ich falsch in Bezug auf die Schleife der Indizes? Der Inhalt von String search ist:

george bush is

und ich möchte String spacesplitted, um es in

George Bush is.

Aber das ist nicht passiert.

Die Ausnahme java.lang.StringIndexOutOfBoundsException: String index out of range ist bei 27 geworfen, entspricht aber Zeile 3 im Codeblock im obigen Auszug. Hier wird String spacesplitted verwendet.

+3

Bitte formatieren Sie Ihren Code. Hast du einen Debugger ausprobiert? In welcher Zeile des gezeigten Codes wird die Exception geworfen? – MrSmith42

+0

Fixed & hinzugefügt Info @ MrSmith42 – DAMDANIEL

+0

Was ist Ihr 'Inhalt' und ist die' searchIdx' am Anfang '0'? –

Antwort

1

Ich habe versucht, den Code Whit diese beim Start

String content = "George Bush is"; 
int searchIdx; 

und es funktioniert (zumindest Linie mit Ausnahme - Sekunde, wenn ein anderes Problem hat) zu laufen. Denken Sie, das Problem ist, dass search Leerzeichen am Anfang oder doppelte Leerzeichen innerhalb hat, und Ihre splitbyspace hat einige leere Zeichenfolgen. Versuchen Sie, das Ergebnis jedes Schritts in einer separaten Variablen zu speichern und im Debug auszuführen. Um es wirklich fehlerfrei zu machen, lesen Sie auch genau String#split javadoc - es hat einige interessante Dinge.

Und schließlich, wenn dieser Code nicht nur für Bildung ist, empfehle ich Ihnen, einige Bibliotheken zu verwenden, in denen Wörter Großschreibung/Aufteilung auf Sätze bereits implementiert sind.

Verwandte Themen