2015-08-20 34 views
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(ACTG)的前4個字符,那麼'CCTG','ACAG','ACTA','AATG'都將是有效的搜索結果並將被返回。

我遇到的問題是主要方法。我應該如何在語法上實例化搜索方法?我試過StringSearch s1 = new StringSearch();然後s1.search();但沒有得到任何結果。另外當我嘗試引用println中的原始字符串時,它說我無法從靜態上下文中引用它們。 Java新手在這裏,具體的幫助將不勝感激。

+3

推薦閱讀:[**如何調試小程序**](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) – durron597

+0

特別是,'new StringSearch ().search()'在你的主要方法中是正確的;它不起作用的原因是你的實際搜索方法可能有問題。閱讀鏈接。 – durron597

+0

請勿添加鏈接,因爲這些鏈接可能會在任何一天脫機。其他人將來無法從中受益。 –

回答

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. 右鍵單擊程序並使用Debug作爲選項。

  3. 使用F5,F6,F7或F8鍵調試

F5執行當前選定的行,轉移至你的程序的下一行。如果所選擇的行是一個方法,則調用調試器步驟進入關聯的代碼。在調用中,F6逐步執行調用,即它在調試器中執行一個方法而不進入該方法。

F7跳出到當前執行方法的調用者。這將完成當前方法的執行並返回給此方法的調用者。

F8告訴Eclipse調試器繼續執行程序代碼,直到達到下一個斷點或觀察點。

+0

早些時候他的代碼沒有編譯,但現在它會。他需要調試他的搜索方法並根據它修正他的代碼。 –