2017-04-05 186 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

相关问题