開始コドンatgと3つの終了コドンtga、taa、およびtagのうちの1つの間のすべてを印刷する必要があります。私は数日の間この問題を解決しようとしてきましたが、終わりに印刷されるものから開始コドンを取り除く方法を見つけることができないようです。EX:私のコードを使用するとATGAAAが印刷されますがAAAだけを印刷する必要があります。最終的なprintlnから開始コドンを削除する
public class GeneFinderYang {
public static int findStopIndex(String dna, int index){
int stop1 = dna.indexOf("tga", index);
if (stop1 == -1 || (stop1 - index) % 3 != 0) {
stop1 = dna.length();
}
int stop2 = dna.indexOf("taa", index);
if (stop2 == -1 || (stop2 - index) % 3 != 0) {
stop2 = dna.length();
}
int stop3 = dna.indexOf("tag", index);
if (stop3 == -1 || (stop3 - index) % 3 != 0) {
stop3 = dna.length();
}
return Math.min(stop1, Math.min(stop2,stop3));
}
public static void printAll(String dna){
String dnaLow = dna.toLowerCase();
int start = 0;
while (true) {
int loc = dnaLow.indexOf("atg", start);
int stop = findStopIndex(dnaLow, loc+3);
if (stop != dna.length()) {
System.out.println(dna.substring(loc, stop));
start = stop + 3;
} else {
start = start + 3;
}
}
}
// demo
public static void testFinder() {
String dna1 = "ATGAAATGAAAA";
System.out.println("DNA string is: \n" +dna1);
System.out.println("Genes found are:");
printAll(dna1);
System.out.print("\n");
}
public static void main(String[] args) {
testFinder();
}
}
「私たちは、ATG開始コドンおよび3つのエンドコドンTGA、TAA、とタグの間のすべてをプリントアウトする必要がある」 - それはあなたが何をしたいのか私にははっきりしていない、あなたの要件を明確にしてください。例が役に立ちます。 – alfasin