当前位置: 首页 > 知识库问答 >
问题:

LastIndexOf和java.lang.IndexOutOfBoundsException

拓拔玺
2023-03-14

我有一个字符串ccaata ccgt,我试图获得连续子序列的固定长度n。然后,我想得到这样的东西:

该字符串中每个子序列的索引。0-3、1-4、2-5等。

0 thru 3 : CCAA 
1 thru 4 : CAAT 
2 thru 5 : AATA 
3 thru 6 : ATAC 
4 thru 7 : TACC 
5 thru 8 : ACCG 
6 thru 9 : CCGT 
for (int i = 0; i < list.size(); i++) {
            System.out.println(ss.indexOf(list.get(i)) 
             + " thru " + ss.lastIndexOf(list.get(i + n - 1)) + " : " 
            + list.get(i));
import java.util.ArrayList;

public class Subsequences {

    public static void main(String[] args) {

        String s = "CCAATA CCGT";
        ArrayList<String> list = new ArrayList<String>(); // list of subsequence

        int n = 4; // subsequences of length

        String ss = s.replaceAll("\\s+", "");
        String substr = null;

        for (int i = 0; i <= ss.length() - n; i++) {
            substr = ss.substring(i, i + n);
            list.add(substr);
        }

        for (int i = 0; i < list.size(); i++) {
            System.out.println(ss.indexOf(list.get(i)) 
             + " thru " + ss.lastIndexOf(list.get(i + n - 1)) + " : " 
            + list.get(i));

        }
    }
}

有什么提示吗?

共有1个答案

茅星华
2023-03-14

我认为您的问题出在list.get(I+n-1)中。您当前正在迭代,以便每个子序列的开始范围从0list.size()-1。最后一个有意义的子序列是list.size()-nlist.size()-1位置的n字符。

for (int i = 0; i < list.size() - n; i++) {
    System.out.println(ss.indexOf(list.get(i)) 
        + " thru " + ss.lastIndexOf(list.get(i + n - 1)) + " : " 
        + list.get(i));

    }
 类似资料:
  • lastIndexOf 方法 在一个字符串中的指定位置从后向前搜索,返回指定的字符串值最后出现的位置。 语法: stringObject.lastIndexOf( search_value, from_index ); 参数说明: search_value - 必需。规定需检索的字符串值。 from_index - 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 str

  • 描述 (Description) Javascript数组lastIndexOf()方法返回可在数组中找到给定元素的最后一个索引,如果不存在,则返回-1。 从fromIndex开始向后搜索数组。 语法 (Syntax) 其语法如下 - array.lastIndexOf(searchElement[, fromIndex]); 参数细节 (Parameter Details) searchEle

  • 描述 (Description) 此方法接受子字符串并返回其在调用String对象中last出现的索引。 它还接受一个可选参数fromIndex来开始搜索,如果找不到该值,则返回-1。 语法 (Syntax) 下面给出了JavaScript的lastIndexOf()方法的语法。 我们可以使用CoffeeScript代码中的相同方法。 string.lastIndexOf(searchValue[

  • 描述 (Description) 此方法接受子字符串并返回其在调用String对象中last出现的索引。 它还接受一个可选参数fromIndex来开始搜索,如果找不到该值,则返回-1。 语法 (Syntax) 下面给出了JavaScript的lastIndexOf()方法的语法。 我们可以使用CoffeeScript代码中的相同方法。 string.lastIndexOf(searchValue[

  • lastIndexOf()方法返回在数组中可以找到给定元素的最后一个索引,如果不存在则返回-1。 从fromIndex开始向后搜索数组。 语法 (Syntax) array.lastIndexOf(searchElement[, fromIndex]); 参数 (Parameters) searchElement - 要在数组中定位的元素。 fromIndex - 开始向后搜索的索引。 默认

  • 此方法返回指定值最后一次出现的调用String对象内的索引,从fromIndex开始搜索,如果未找到该值则返回-1。 语法 (Syntax) string.lastIndexOf(searchValue[, fromIndex]) 参数细节 (Argument Details) searchValue - 表示要搜索的值的字符串。 fromIndex - 调用字符串中用于开始搜索的位置。 它可以