2017-01-27 2 views
-2

Я упражняюсь в своем курсе в java, и задача состоит в том, чтобы написать программу, в которой есть список, разделенный пробелами. И ключ состоит в том, чтобы перевернуть список, т. Е. Поставить первое место в последнюю секунду на предыдущий и усечь негативы. Но я продолжаю получать эту ошибку StringIndexOutOfBounds. В чем проблема?Java String Error Out Of Bounds

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; 
} 

ответ

1

Я подозреваю, что ваш StringIndexOutOfBounds исходит из того, вы из индекса повторяется для 0 индексировать input.length, поэтому 1 слишком много.

Для charAt Строки в Java индексируются по 0, поэтому вы начинаете считать с 0 (что вы бы назвали «первым» на простом английском языке). В такой ситуации последний символ имеет индекс length-1.

Так, чтобы быть конкретным. Следующее, что нужно исправить, - это условие в цикле while. Я думаю, что вы намерены сказать:

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

Любая строка имеет символы от индекса 0 до длины-1. Если вы попытаетесь сделать charAt (length), вы получите StringIndexOutOfBounds.

Изменение в то время как линия ниже & она должна работать:

while (counter<input.length()){