私が取っているコース用に、DNA 鎖内の遺伝子を検索する Java プログラムを作成する必要があります。私が抱えている問題は、テスト メソッドから printAllgenes(a) を void printAllgenes メソッドに渡す必要があることです。テストメソッドでは、'int a' を 'String a' に設定しようとしましたが、どちらの場合もコンパイル時に void を int または String に変換できないことを説明するエラーが発生しました。当たり前のことだと思いますが、私はプログラミングに非常に慣れていないので、私の無知を許してください! ありがとうございました。
import java.io.*;
import edu.duke.*;
public class FindProtein {
public void test() {
String a = "atg aaa tab tag atg aaa tga aat ag";
int b = printAllgenes(a);
System.out.println("DNA string is " + a);
System.out.println("Gene found is " + b);
}
public void printAllgenes(String dna) {
int sp = 0; //start point
while (true) {
int start = dna.indexOf("atg,sp");
if (start == -1) {
break;
}
int stop = findStopIndex(dna, start + 3);
if (stop != dna.length()) {
System.out.println(dna.substring(start, stop + 3));
sp = stop + 3;
} else {
sp = sp + 3;
}
}
}
public int findStopIndex(String dna, int index) {
int tga = dna.indexOf("tga", index);
if (tga == -1 || (tga - index) % 3 != 0) {
tga = dna.length();
}
int taa = dna.indexOf("taa", index);
if (taa == -1 || (taa - index) % 3 != 0) {
taa = dna.length();
}
int tag = dna.indexOf("tag", index);
if (tag == -1 || (tga - index) % 3 != 0) {
tag = dna.length();
}
return Math.min(tga, Math.min(taa, tag));
}
}