我试图打印"是"对于以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
你知道这个循环在哪里形成吗?如果是这样,请给我提示我应该如何解决这个问题。
谢谢!
答案 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