2016-03-29 16 views
-4

インデックスが範囲外である理由は絶対にわかりません。 文字列の先頭がatgの文字列ataaactatgttttaaatgtで、末尾がtaaです。私はここで何が欠けていますか?文字列インデックスが範囲外です-8

編集:これは右ここ

String subStr1 = dna.substring(start,stop1);

/** 

* 
* @author Duke Software Team 
*/ 
import edu.duke.*; 
import java.io.*; 

public class TagFinder2 { 


    public String findProtein(String dna) { 
    int start = dna.indexOf("atg"); 

    int stop1 = dna.indexOf("tag", start+3); 
    int stop2 = dna.indexOf("tga",start+3); 
    int stop3 = dna.indexOf("taa",start+3); 


    String subStr1 = dna.substring(start,stop1); 
    String subStr2 = dna.substring(start,stop2); 
    String subStr3 = dna.substring(start,stop3); 

    String result; 

    if(subStr1.length() % 3 ==0){ 
     return subStr1; 
    } else if (subStr2.length()%3==0){ 
     return subStr2; 
    } else if (subStr3.length()%3 == 0) { 
     return subStr3; 
    } else { 

     return ""; 
    } 
    } 

    private void stopCodon(String gene){ 
    //This prints out the last 3 characters of the gene 

    String stopCodon = gene.substring(gene.length() - 3); 
    System.out.println(stopCodon); 
    } 

    public void testing() { 
    String a = "ataaactatgttttaaatgt"; 
    String b = "acatgataacctaag"; 
    String c = "AATGCTAGTTTAAATCTGA"; 

    String result = findProtein(a); 

    stopCodon(result); 

    } 
    //public String stopCodon(String dna){ 
    // return 
    // } 


} 
+1

?コードをデバッグしようとしましたが、開始変数と停止変数の値をチェックしましたか?例えばあなたが言及した文字列に "タグ"がないので、stop1は-1になります。 – Ridcully

+1

変数の値を印刷して自分で見つけることができます。私たちからこのようなことを尋ねることは、みんなの時間の無駄です。 – Kayaman

+0

あなたの文字列には 'tag'もありません。また、「0%3」も「0」に等しい。 – SomeJavaGuy

答えて

2
int stop1 = dna.indexOf("tag", start+3); 

Stringaはテキストtagが含まれているため、-1を返していないラインです。したがって、最終的にはAI00Bという結果となるパラメータ7と-1を持つ

String subStr1 = dna.substring(start,stop1); 

となります。ドキュメントから

例外:IndexOutOfBoundsException - beginIndexが負である、又は endIndexがこのStringオブジェクトの長さよりも大きい、または beginIndexがendIndexより大きい場合。

0

コードを分析またはデバッグすると、stop1=-1,start=7が見つかります。 substring(7,-1)の場合、どうしたらうまくいかないでしょうか?正確に例外をスローライン

Click here to show the debug message picture.

関連する問題