インデックスが範囲外である理由は絶対にわかりません。 文字列の先頭が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
// }
}
?コードをデバッグしようとしましたが、開始変数と停止変数の値をチェックしましたか?例えばあなたが言及した文字列に "タグ"がないので、stop1は-1になります。 – Ridcully
変数の値を印刷して自分で見つけることができます。私たちからこのようなことを尋ねることは、みんなの時間の無駄です。 – Kayaman
あなたの文字列には 'tag'もありません。また、「0%3」も「0」に等しい。 – SomeJavaGuy