0

私が書いているこのミニ検索エンジンのメイン メソッドの書き方について、いくつかの指針が必要です。これが私のコードです:

public class StringSearch {   
    private String s1 = "ACTGACGCAG";
    private String s2 = "TCACAACGGG";
    private String s3 = "GAGTCCAGTT";

    public static void main(String[] args) {         
        System.out.println("Welcome!  The strings you started with are:\n" + s1 + "\n" + s2 + "\n" + s3);
    }

    public void search() {
        do {
            for(int i = 0; i < s1.length() - 4; i++) {
                int d = 0;
                String subStr = s1.substring(0 + i, 4 + i);
                do{ 
                    for (int iSub = 0; iSub < 4; i++){
                        if (subStr.charAt(iSub) != (subStr.charAt(iSub))) {
                            d += 1;
                        }
                    }
                }while(d < 2);
                if(s2.contains(subStr) && s3.contains(subStr)) {
                    System.out.println(subStr + "is in all 3 lists.");
                }
            }
        }while (s1.length() - 4 < 6);
        System.out.println("Task Complete.");        
    }
}

アイデアは、最初に3つの文字列のセットがあり、4文字の部分文字列を作成し、それを3つの文字列すべてと比較して、それぞれに少なくとも3/4文字が一致するかどうかを確認する必要があるということです. たとえば、s1 の最初の 4 文字 (ACTG) を取得すると、「CCTG」、「ACAG」、「ACTA」、「AATG」はすべて有効な検索結果となり、返されます。

私が抱えている問題は、メインメソッドにあります。検索メソッドを構文的にインスタンス化するにはどうすればよいですか? StringSearch s1 = new StringSearch(); を試しました。そして s1.search(); しかし、結果は得られませんでした。また、println で元の文字列を参照しようとすると、静的コンテキストからは参照できないと表示されます。ここではJavaの初心者ですが、具体的な助けをいただければ幸いです。

4

1 に答える 1

0

静的メソッドでフィールドを直接参照することはできません。まず、次のようにオブジェクトを作成する必要があります:-

public static void main(String[] args) {  
    StringSearch stringSearch = new StringSearch();
    stringSearch.search();
    System.out.println("Welcome!  The strings you started with are:\n" + stringSearch.s1 + "\n" + stringSearch.s2 + "\n" + stringSearch.s3);
}

検索方法の問題については、方法をデバッグする必要があります。

手順:-

  1. Eclipse を使用している場合は、左側の行番号をダブルクリックするか、右クリックして、メイン スレッドを停止する場所の [ブレークポイントの切り替え] を選択します。

  2. プログラムを右クリックし、デバッグをオプションとして使用します。

  3. F5、F6、F7、または F8 キーを使用してデバッグします

F5 は、現在選択されている行を実行し、プログラムの次の行に移動します。選択した行がメソッド呼び出しの場合、デバッガーは関連するコードにステップインします。

F6 は呼び出しをステップオーバーします。つまり、デバッガーでステップインせずにメソッドを実行します。

F7 は、現在実行中のメソッドの呼び出し元にステップ アウトします。これにより、現在のメソッドの実行が終了し、このメソッドの呼び出し元に戻ります。

F8 キーは、次のブレークポイントまたはウォッチポイントに到達するまでプログラム コードの実行を再開するように Eclipse デバッガーに指示します。

于 2015-08-20T03:28:26.993 に答える