-1

ゲノム内の遺伝子を見つけるには、開始コドン ATG をスキャンし、そのインデックスを記憶してから、次の終止コドン TAG からスキャンします。介在する配列の長さが 3 の倍数である場合、遺伝子が見つかったことになります。遺伝子を返す

これが私がこれまでに得たものです:

public static void main(String[] args) {
    System.out.println("This is a gene finder program.");
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter the string that you want to locate genes:");
    String geneString = scan.nextLine();
    System.out.println(scanGene(geneString));
}
public static String scanGene(String geneString) {
    int i = 0;
    int x = 3;
    int y = 3;
    double startCondon, endCondon;
    while (i < geneString.length() - 3) {
        i = i+1;
        x = x+1;                
        if(geneString.substring(i,x) == "ATG") {
            startCondon = geneString.indexOf(x+1);
            while (y<geneString.length()) {
                y = y+1;
                if (geneString.substring(y,y+4) == "TAG") {
                    endCondon = geneString.indexOf(y-1);
                    if ((endCondon - startCondon) % 3 == 0)
                        System.out.println("We have found a gene!");
                }
            }

    }
}
    return geneString.substring(x+1,y);
}

助けてください?動作していないようです...何らかの理由で、「範囲外」というエラーが表示されます。インデックスは負の数か何かです。私はコードを調べましたが、あまりにも間違っているものを見つけることができないようです....ありがとう

4

2 に答える 2

0

まず、変数名を改善します。次に、デバッグ ステートメントを追加します。

部分文字列を作成する前に、インデックスを作成しようとしているものの開始と終了のインデックスを出力します。-1 にならないことを確認してください。

于 2016-08-21T05:05:02.690 に答える