线扫描环路
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
我正在尝试为文件 (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