невозможно запустить действие: StringIndexOutOfBoundsException: индекс строки вне диапазона: -2 - PullRequest
0 голосов
/ 07 декабря 2018

Я извлекаю данные из таблицы и отображаю их в текстовом виде. Я разбил строку с помощью метода breakString (), но в двух последних данных, которые являются starcast и Director, он показывает StringIndexOutOfBoundsException ... так как я отлаживал данные приложения,по-прежнему внутри строки, но отладка останавливается, когда он достигает начала передачи ...

метод breakString ()

   public void breakString(String str)
    {
        name=str.substring(1,str.indexOf(","));
        str= str.substring( name.length()+2, str.length(  ) );

        genre=str.substring(0,str.indexOf(","));
        str= str.substring( genre.length()+1, str.length(  ) );

        year=str.substring(0,str.indexOf(","));
        str= str.substring( year.length()+1, str.length(  ) );

        duration=str.substring(0,str.indexOf(","));
        str= str.substring( duration.length()+1, str.length(  ) );

        String str1 = str.substring(0,str.indexOf(","));
        rating=Double.valueOf(str1);

        str = str.substring( str1.length()+1, str.length() );
        review = str.substring(0,str.indexOf( "," ));
        str=str.substring(review.length()+1,str.indexOf(","));

        starcast = str.substring( 0, str.indexOf( "," ));
        str = str.substring( starcast.length()+1, str.indexOf(","));
       // str = str1.substring( starcast.length()+1, str.length()-1 );

        director = str;

    }

изображение режима отладки

введите описание изображенияздесь

введите описание изображения здесь

введите описание изображения здесь

после этого отладка прекращается и ничего не происходитгенерируется.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

После простого юнит-теста:

str = str.substring(review.length()+1, str.length());
...
str = str.substring(starcast.length()+1, str.length());

Однако я настоятельно рекомендую StringTokenizer .

0 голосов
/ 07 декабря 2018

ОБНОВЛЕНИЕ

Ваша проблема в следующей строке:

 str=str.substring(review.length()+1,str.indexOf(",")) //Original
 str=str.substring(review.length()+1,str.length()); // Should be

Программа потерпела крах, так как длина обзора составляет 45 ииндекс запятой составляет 44.

...