线扫描仪循环

时间:2017-11-20 07:21:23

标签: java java.util.scanner java-io

我试图打印"是"对于以dna.txt开头并以"ATG""TAA""TAG"结尾的文件("TGA")中的每一行,以及"否&# 34;如果不是这样的话。它应该在文件中的行完成后停止,但是我在代码中创建了某种循环,其中没有任何内容打印到输出文件(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 个答案:

答案 0 :(得分:4)

刚刚修改了几行,

<强>更改

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