0

私が取っているコース用に、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));
  }
}
4

2 に答える 2

1

ちょうど使用してみてください:

 printAllgenes(a); 

printAllgenesメソッドには return ステートメントの型がないためです。

于 2016-02-25T10:28:54.083 に答える
1

戻り値の型voidをに変更して、メソッドint から返したいものは何でもカウントを返します。コンソールに表示されているprintAllgenes(String dns)変数を初期化する int リターンを取得します。b

public int 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;
             }        
        } 
        return sp;

    }

これで、Test Method実装は正常に機能します...

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);    
 }

ありがとうございました..

于 2016-02-25T10:41:24.067 に答える