2017-04-05 77 views
-2

我正在嘗試讀取名爲ecoli.txt的文件,其中包含ecoli的DNA序列,並將其內容存儲到一個字符串中。我試圖打印字符串來測試我的代碼。但是,當我運行該程序時,沒有輸出。我對Java仍然陌生,所以我確信在我的代碼中有一個錯誤,我只需要幫助找到它。爲什麼我運行代碼時沒有輸出?

package codons; 
import java.io.*; 
public class codons 
{ 

    public static void main(String[] args) 
    { 
     try 
     { 
      FileReader codons = new FileReader("codons.txt"); 
      FileReader filereader = new FileReader("ecoli.txt"); 
      BufferedReader ecoli = new BufferedReader(filereader); 
      StringBuilder dna_string = new StringBuilder(); 
      String line = ecoli.readLine(); 
      while(line != null); 
      { 
       dna_string.append(line); 
       line = ecoli.readLine(); 
      } 
      String string = new String(dna_string); 
      System.out.println(string); 
      ecoli.close(); 
     } 
     catch (FileNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 


    } 

} 

編輯:

我仍然有獲得程序工作,我想它,所以我試圖完成寫什麼,我在節目想休息的麻煩了,我仍然沒有得到任何輸出。無論如何,這是我在哪裏,在現在:

package codons; 
import java.io.*; 
import java.util.*; 
import java.lang.*; 
import java.text.*; 
public class codons 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      FileReader filecodons = new FileReader("codons.txt"); 
      FileReader filereader = new FileReader("ecoli.txt"); 
      BufferedReader ecoli = new BufferedReader(filereader); 
      StringBuilder dna_sb = new StringBuilder(); 
      String line = ecoli.readLine(); 
      while(line != null) 
      { 
       dna_sb.append(line); 
       line = ecoli.readLine(); 
      } 
      String dna_string = new String(dna_sb); 
      ecoli.close(); 
      BufferedReader codons = new BufferedReader(filecodons); 
      StringBuilder codon_sb = new StringBuilder(); 
      String codon = codons.readLine(); 
      while(codon != null) 
      { 
       codon_sb.append(codon); 
       line = codons.readLine(); 
      } 
      String codon_string = new String(codon_sb); 
      codons.close(); 
      for(int x = 0; x <= codon_sb.length(); x++) 
      { 
       int count = 0; 
       String codon_ss = new String(codon_string.substring(x, x+3)); 
       for(int i = 0; i <= dna_sb.length(); i++) 
       { 
        String dna_ss = new String(dna_string.substring(i, i+3)); 
        int result = codon_ss.compareTo(dna_ss); 
        if(result == 0) 
        { 
         count += 1; 
        } 
       } 
       System.out.print("The codon '"); 
       System.out.print(codon_ss); 
       System.out.print("'is in the dna sequence"); 
       System.out.print(count); 
       System.out.println("times."); 
      } 
     } 
     catch (FileNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 


    } 

} 
+2

調試時間 - 在while循環中打印出行以查看正在發生的情況,打印出文件的路徑以確保其正確性 –

+0

您還應該添加一個catch塊以用於'Exception '如果異常類型不是'FileNotFoundException'或'IOException'。 –

+0

我也很困惑,爲什麼當它被初始化爲'String'時,爲什麼要迭代'line'。這真的沒有意義 - 最好不是'while'而是'if'。 –

回答

4

取出;while(line != null)後,它會導致一個無限循環,而不是執行下一個指令。

原因在這裏解釋:Effect of semicolon after 'for' loop(這個問題是關於C的語言,但它相當於Java)。

+0

我明白爲什麼應該刪除分號但在刪除分號後仍然沒有輸出。 – Nunzio

+0

@Nunzio與測試文件中提供的示例正常工作,如果你還沒有看到輸出有可能是一個問題,別的地方或者您正在使用 –

+0

我編輯我的職務與我在那裏的更新輸入文件現在。我仍然沒有輸出。任何反饋將不勝感激。 – Nunzio

相關問題