Я пытаюсь отладить мою программу для ошибок; например, когда я пытаюсь запустить свой код, он печатает только строку ДНК вместо того, чтобы печатать последовательности генов. Проблемная область находится вокруг инструкции while метода printAll. Мне нужно вызвать метод findStopIndex внутри цикла while. Но мне интересно, почему, когда я его запускаю, я выгляжу пустым. Любые идеи были бы весьма полезны.Отладка моего сбойного кода
public class FindMultiGenes4 {
public
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 void printAll(String dna) {
dna = "CATGTAATAGATGAATGACTGATAGATATGCTTGTATGCTATGAAAATGTGAAATGACCCA";
String sequence = dna.toLowerCase();
int index = 0;
int newIndex = 0;
while (true) {
index = sequence.indexOf("atg", index);
if (index == -1)
break;
if (newIndex == -1) // Check needed only if a stop codon is not guaranteed for each start codon.
break;
int stop = findStopIndex(dna, index);
if (stop != sequence.length()){
System.out.println("From " + (index ) + " to " + newIndex+3 + " Gene: " + sequence.substring(index, stop+3));
index = sequence.substring(index, stop + 3).length();
}
else {index = index+3;
}
}
}
public void testFinder(){
FindMultiGenes4 FMG = new FindMultiGenes4();
String dna = "CATGTAATAGATGAATGACTGATAGATATGCTTGTATGCTATGAAAATGTGAAATGACCCA";
FMG.printAll(dna);
System.out.println("DNA: "+dna);
}
}
Но что, если у меня есть строка ДНК, которая является строчной. Что мне нужно сделать, чтобы изменить этот код? –
Я отредактировал свой ответ, теперь он нечувствителен к регистру. – 11thdimension
Программа имеет один недостаток: она не смотрит мимо предыдущих генов. Вместо этого он находит перекрывающиеся гены. В случае с dna strand ATGAAATGAAAA он не обнаруживает генов. Вот некоторые примеры нити, где гены выходных показаны, а также: Строка ДНК: ATGAAATGAAAA Джин найденное: ATGAAATGA Строка ДНК: ccatgccctaataaatgtctgtaatgtaga Гены найдены являются: atgccctaa atgtctgtaatgtag –