字符串索引 - 子字符串和主字符串某些内容无法正常工作

时间:2016-06-06 13:57:21

标签: java string algorithm

我想要在主阵列中测试子阵列数组。 但我得到错误。

我正在做的测试是对还是需要添加更多条件?

最后,我需要打印主数组的索引,其中子字符串开始。

回答示例:

String m="cd e";
String n="abcd efghi";

print>>>> 2(the index in n String)

错误:

 Exception in thread "main" java.lang.StringIndexOutOfBoundsException:         
 String  index out of range: 4
 at java.lang.String.charAt(Unknown Source)
 at test1.main(test1.java:10)

代码:

    String m="cd e";
    String n="abcd efghi";


    for (int i = 0; i < m.length(); i++) {
        for (int j = 0; j < n.length(); j++) {
            if(m.charAt(j)==n.charAt(i) )
                if(m.charAt(j+1)==n.charAt(i+1))
                    System.out.println(i);          
        }   
     }

感谢&#39; S

3 个答案:

答案 0 :(得分:1)

试试这个: 你仔细查看n,因为它的长度最长。我希望这有帮助。          字符串m =“cd e”;         字符串n =“abcd efghi”;

    for (int i = 0; i < n.length(); i++) {
        for (int j = 0; j <i; j++) {
            if (i <= m.length()){ // to prevent indexoutOfbound exception
                if(m.charAt(j)==n.charAt(i) ) {
                    System.out.println(m.charAt(j)+"-->"+i);
                }
            }
        }
    }

输出:

c-->2
d-->3
 -->4

答案 1 :(得分:0)

package default1;

public class Test {
public static void main(String[] args) {
    String m="cd e";
    String n="abcd efghi";

    System.out.println(n.indexOf(m));

}
}

答案 2 :(得分:0)

int i = 0;
    int j = 0;
    int index = 0;
    boolean previousMatch = false;
    while (i < n.length()) {
        if (j == m.length()) {
            break;
        }
        if (m.charAt(j) == n.charAt(i)) {
            if (!previousMatch) {
                previousMatch = true;
                index = i;
            }
            j++;
        } else {
            previousMatch = false;
            index = 0;
            j = 0;
        }
        i++;
    }
    if (previousMatch)
        System.out.println(index);