你好我今年夏天参加编程课程,我需要创建一个从文件中读取输入的程序。输入文件包括DNA序列ATCGAGG等,文件中的第一行表示需要比较多少对序列。其余的是一对序列。在类中,我们使用Scanner方法从文件中输入行,(我读过bufferedReader,但我们没有在课堂上介绍它,所以不熟悉它)但是如何编写如何比较两行的代码就迷失了扫描仪方法同时进行。
我的尝试:
public static void main (String [] args) throws IOException
{
File inFile = new File ("dna.txt");
Scanner sc = new Scanner (inFile);
while (sc.hasNextLine())
{
int pairs = sc.nextLine();
String DNA1 = sc.nextLine();
String DNA2 = sc.nextLine();
comparison(DNA1,DNA2);
}
sc.close();
}
如果比较方法具有共同的任何常见字符,那么它将采用一对序列并输出。另外我将如何继续输入下一对,任何见解都会有所帮助..只是难倒和谷歌让我更加困惑。谢谢!
编辑:
这是示例输入
7
atgcatgcatgc
AtgcgAtgc
GGcaAtt
ggcaatt
GcT
gatt
aaaaaGTCAcccctccccc
GTCAaaaaccccgccccc
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
gctagtacACCT
gctattacGcct
答案 0 :(得分:0)
首先要做的是:
while (sc.hasNextLine())
{
int pairs = sc.nextLine();
虽然你只有一对线而不是成对和两行输入,但行数一次?从looop移动读取对并将其解析为int,然后无关紧要,但如果你知道有多少行,你可以用它来停止读取行。
第二
throws IOException
可能无关紧要,但是,你真的不知道怎么做尝试捕捉,如果你不关心异常,我们就说跳过?
比较,如果你读取字符串,那么字符串有方法“等于”,您可以使用它来比较两个字符串。
谷歌不会帮助你解决这些问题,你只是不知道这一切,但如果你想知道然后搜索基本的东西,如输入谷歌“字符串比较java”,并不认为你可以找到解决方案键入“使用扫描仪从输入文件中读取两行”进入谷歌,你必须一步一步地将问题分成小块,这就是软件开发人员正在做的事情。
好的,我已经为某些人做了事情,只是找到了有某些东西的线条然后将它们打印出来,即使我有部分,所以这对于这样的事情来说是蛮力:
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class program
{
public static void main (String [] args) throws IOException
{
File inFile = new File ("c:\\dna.txt");
Scanner sc = new Scanner (inFile);
int pairs = Integer.parseInt(sc.nextLine());
for (int i = 0; i< pairs-1; i++)
{
//ok we have 7 pairs so we do not compare everything that is one under another
String DNA1 = sc.nextLine();
String DNA2 = sc.nextLine();
Boolean compareResult = comparison(DNA1,DNA2);
if (compareResult){
System.out.println("found the match in:" + DNA1 + " and " + DNA2) ;
}
}
sc.close();
}
public static Boolean comparison(String dna1, String dna2){
Boolean contains = false;
for (int i = 0; i< dna1.length(); i++)
{
if (dna2.contains(dna1.subSequence(0, i)))
{
contains = true;
break;
}
if (dna2.contains(dna1.subSequence(dna1.length()-i,dna1.length()-1 )))
{
contains = true;
break;
}
}
return contains;
}
}