线扫描环路

Line Scanner Loop

我正在尝试为文件 (dna.txt) 中以 "ATG" 开头并以 "TAA"、[=15] 结尾的每一行打印出 "YES" =],或 "TGA",以及 "NO"(如果不是这种情况)。它应该在文件中的行完成后停止,但我在我的代码中创建了某种循环,其中没有任何内容打印到输出文件 (hi.txt) 但 "NO"... 无休止。我知道它也应该有一些 "YES"ses,但我的问题显然不仅仅是没有正确读取文件的标记。

我的代码:

public static void Results(Scanner console) throws
        FileNotFoundException {
    System.out.print("Input file name? ");
    Scanner input = new Scanner(new File("dna.txt"));
    System.out.print("Output file name: ");
    File outputFile = new File("hi.txt");
    System.out.println();

    PrintStream outputRead = new PrintStream(outputFile);
    String isProtein = "NO";
    while (input.hasNextLine()) {
        String line = input.nextLine().toUpperCase();
        Scanner lineScan = new Scanner(line);
        while (lineScan.hasNext()) {
            if (line.startsWith("ATG")) {
                if (line.endsWith("TAA") || line.endsWith("TAG") ||
                        line.endsWith("TGA")) {
                    isProtein = "YES";
                }
            }
        }
        outputRead.println(isProtein);
    }
    System.out.println(isProtein);
}

文本文件(尽管它应该适用于任何文本文件,但事实并非如此):

protein?
ATGCCACTATGGTAG
protein?
ATgCCAACATGgATGCCcGATAtGGATTgA
protein?
CCATt-AATgATCa-CAGTt
protein?
ATgAG-ATC-CgtgatGTGgg-aT-CCTa-CT-CATTaa
protein?
AtgC-CaacaTGGATGCCCTAAG-ATAtgGATTagtgA
protein?
atgataattagttttaatatcaga-ctgtaa

你知道这个循环是在哪里形成的吗?如果是这样,请给我一些提示,告诉我应该如何解决这个问题。

谢谢!

刚刚修改了几行,

变化

1.) 评论 Scanner lineScan = new Scanner(line);

2.) 需要在循环中为下一次迭代重置 isProtein 的值。

o/p 打印在文本文件 hi.txt 中。顺便说一句,我已经将文本文件用于 R/W 操作,因此注释掉了扫描仪部分。

代码

public static void Results() throws FileNotFoundException {
        //System.out.print("Input file name? ");
        Scanner input = new Scanner(new File("dna.txt"));
        //System.out.print("Output file name: ");
        File outputFile = new File("hi.txt");
        //System.out.println();

        PrintStream outputRead = new PrintStream(outputFile);
        String isProtein = "NO";
        while (input.hasNextLine()) {
            String line = input.nextLine().toUpperCase();
            //Scanner lineScan = new Scanner(line);
            //while (lineScan.hasNext()) {
                if (line.startsWith("ATG")) {
                    if (line.endsWith("TAA") || line.endsWith("TAG") || line.endsWith("TGA")) {
                        isProtein = "YES";
                   }
                }else{
                      isProtein = "NO";
                }
            //}
            outputRead.println(isProtein);
            isProtein = "NO";
        }
        //System.out.println(isProtein);
    }

输出

NO
YES
NO
YES
NO
NO
NO
YES
NO
YES
NO
YES