-2

我正在从表中检索数据并将其显示在 textview 中,我使用 breakString() 方法打破了字符串,但在最后两个数据是 starcast 和 director 中,它显示 StringIndexOutOfBoundsException ... 因为我已经调试了应用程序数据仍在字符串,但调试停止时到达starcast ...

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;

    }

调试模式图像

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此之后调试停止并且没有生成任何内容。

4

2 回答 2

0

更新

您的问题在以下行中:

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

程序崩溃了,因为review的长度是45,indexOf的逗号是44。

于 2018-12-07T06:46:39.613 回答
0

经过简单的单元测试:

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

但是,我强烈推荐StringTokenizer

于 2018-12-07T07:59:33.150 回答