使用Scanner从输入文件中读取两行

时间:2013-07-26 21:59:08

标签: java

你好我今年夏天参加编程课程,我需要创建一个从文件中读取输入的程序。输入文件包括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

1 个答案:

答案 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;    
}

}