为什么运行代码时没有输出?

时间:2017-04-05 22:49:15

标签: java

我正在尝试读取一个名为ecoli.txt的文件,其中包含大肠杆菌的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();
        }


    }

}

1 个答案:

答案 0 :(得分:4)

;之后删除while(line != null),它会导致无限循环,而不是执行下一条指令。

原因在此解释:Effect of semicolon after 'for' loop(问题与C语言有关,但在Java中相同)。