Java 编写调用成员变量的方法
我想在DNA序列中找到基因。基因有起始密码子和终止密码子 起始密码子是ATG。终止密码子是:TGA,TAA,TAG 这是DNA字符串的一个示例: AAATGCCCTAATTAGAATAGTTCAA 为了找到一个基因,我们必须找到起始密码子(ATG)和最近的终止密码子(TAG、TGA或TAA),即距离起始密码子3个字符的倍数,因此在这种情况下,该基因是 ATGCCCTAA 而不是 ATGCCCTAATTAG 或 ATGCCCTAATATAGAATGA 因为TAG距离ATG和TGA有7个字符,即使它距离ATG和TGA有12个字符,它也不是最近的终止密码子 我将编写一个名为printAll的方法,其中有一个参数stringdna,它调用findStopIndex成员变量,该变量将用于打印在一个dna字符串中找到的所有基因,比如这个:catgtaatagaatgagatgactgatagatagcttgtatgctatgaaatgaatgaatgaccca 以下是我迄今为止编写的代码:Java 编写调用成员变量的方法,java,Java,我想在DNA序列中找到基因。基因有起始密码子和终止密码子 起始密码子是ATG。终止密码子是:TGA,TAA,TAG 这是DNA字符串的一个示例: AAATGCCCTAATTAGAATAGTTCAA 为了找到一个基因,我们必须找到起始密码子(ATG)和最近的终止密码子(TAG、TGA或TAA),即距离起始密码子3个字符的倍数,因此在这种情况下,该基因是 ATGCCCTAA 而不是 ATGCCCTAATTAG 或 ATGCCCTAATATAGAATGA 因为TAG距离ATG和TGA有7个字符,即使它
public class ProteinFinder {
public void printAllStarts(String dna) {
int start = 0;
while (true) {
int loc = dna.indexOf("atg", start);
if (loc == -1) {
break;
}
System.out.println("Starts at " + loc);
start = loc + 3;
}
}
public int findStopIndex(String dna, int index) {
int stop1 = dna.indexOf("tga", index);
if (stop1 == -1 || (stop1 - index) % 3!=0) {
stop1 = dna.length();
}
System.out.println(stop1);
int stop2 = dna.indexOf("taa", index);
if (stop2 == -1 || (stop2 - index) %3 !=0) {
stop2 = dna.length();
}
System.out.println(stop2);
int stop3 = dna.indexOf("tag", index);
if (stop3 == -1 || (stop3 - index) %3 !=0) {
stop3 = dna.length();
}
System.out.println(stop3);
return Math.min(stop1, Math.min(stop2, stop3));
}
public void printAll(String dna) {
}
}
你能帮我写这个方法吗?谢谢。这应该可以:
public void printAll(String dna) {
int start = 0;
while (true) {
int atg = dna.indexOf("atg", start);
if (atg == -1) {
break;
}
int end = findStopIndex(dna, atg+3);
if (end != dna.length()) {
System.out.println(dna.substring(atg, end+3));
start = end + 3;
}
else {
start = start+3;
}
}
}
小心使用。@ElliottFrisch不完全是与java相关的注释。@Ekaterina1234请使用。它是专门为这项任务而发明的。