找到两个不同的子字符串并在JAVA中打印它们之间的所有内容

时间:2015-03-11 10:38:08

标签: java arrays substring character-arrays

String theString="gtcaatgccaataaagt";
char[] charArray = theString.toCharArray();
int len=theString.length();
boolean start = false,end1 = false;
for(int i=0;i<len;i++){
    if(charArray[i]=='a' && charArray[i+1]=='t' && charArray[i+2]=='g'){
        start=true;
    }
    if(charArray[i]=='t' && charArray[i+1]=='a' && charArray[i+2]=='a'){
        end1=true;
    }
}
while(start==true && end1==true){
    for(int i=0;i<len;i++){
        System.out.println(charArray[i]);
    }
}

我想在&#34; atg&#34;之间打印字符。和&#34; taa&#34;来自字符串&#34; theString&#34; ... 但是上面的代码我得到了java.lang.ArrayIndexOutOfBoundsException。 不知道如何处理它...我认为错误是在第一个循环中.....但我不知道如何阅读&#34; atg&#34;首先,然后阅读&#34; taa&#34;

2 个答案:

答案 0 :(得分:1)

您正在根据字符串的大小检查索引

for(int i=0;i<len;i++){

但是在

之后访问String两个字符
if(charArray[i]=='a' && charArray[i+1]=='t' && charArray[i+2]=='g'){

将循环更改为

for(int i=0;i<len-2;i++){

或者使用String API中的indexOflastIndexOf方法。

答案 1 :(得分:1)

这样的事情对你有用:

public static void main(String[] args) {
    String s = "abcdefghijk";
    int i1 = s.indexOf("cd")+2; // add index + length of substring (i.e, 2)
    int i2 = s.indexOf("ij");
    System.out.println(s.substring(i1,i2));

}

O/P :
efgh