2017-01-27 5 views
-2

Ich trainiere für meinen Kurs in Java und die Aufgabe ist es, ein Programm zu schreiben, das die Eingabe einer Liste mit Leerzeichen getrennt hat. Und der Schlüssel ist, die Liste umzudrehen, d. H. Den ersten Platz in der letzten Sekunde vor dem letzten zu setzen und die Negative abzuschneiden. Aber ich bekomme diesen Fehler von StringIndexOutOfBounds. Was scheint das Problem zu sein?Java String Fehler außerhalb der Grenzen

public static void main(String args[]) 
{ 
    Scanner in = new Scanner (System.in); 
    System.out.println("Insert the list: "); 
    String input = in.nextLine(); 

    String out = out(input); 

    System.out.println(out); 
} 

public static String out (String input){ 
    String reverse = ""; 
    int counter = 0; 

    while (counter<=input.length()){/* 
     String min = input.charAt(counter) +       input.charAt(counter+1); 
     int num = Integer.parseInt(min) ; 
     if (num>=0){*/ 
      reverse+= input.charAt(counter); 
      counter++; 
     /*}*/ 
    } 
    return reverse; 
} 

Antwort

1

Ich vermute, Ihr StringIndexOutOfBounds aus der Tatsache stammt aus dem Index 0 indizieren Sie iterieren input.length, so 1 zu viele.

Aus Gründen der charAt sind die Strings in Java 0-indiziert, so dass Sie beginnen, von 0 zu zählen (was Sie "zuerst" in einfachem Englisch nennen würden). In einer solchen Situation befindet sich das letzte Zeichen im Index length-1.

Also, um genau zu sein. Ihre nächste Sache zu beheben ist der Zustand in der while Schleife. Ich glaube, Ihre Absicht war zu sagen:

while (counter < input.length()) { 
... 
1

Jeder String hat Zeichen von Index 0 bis Länge-1. Wenn Sie versuchen würden, charAt (length) zu verwenden, würden Sie mit StringIndexOutOfBounds enden.

Ändern der während Linie auf unter & sollte es funktionieren:

while (counter<input.length()){ 
Verwandte Themen