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

标签 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

最佳答案

首先你为什么这样做:

while (sc.hasNextLine())
{
  int pairs = sc.nextLine();

虽然您只在一行中输入对,而不是输入对和两行,但一次的行数?将读取对从 while 循环中移出并将其解析为 int,那么这并不重要,但如果您知道有多少行,则可以使用它来停止读取行。

第二:

throws IOException

可能无关紧要,但是,如果您不关心异常,您真的不知道如何执行 try catch 并假设跳过?

比较,如果你读取字符串,那么字符串有方法“equals”,你可以用它来比较两个字符串。

Google 不会帮助您解决这些问题,您只是不知道全部,但是如果您想知道,请搜索基本内容,例如在 google 中输入“string comparision java”,并且不要认为您可以找到解决方案在谷歌中输入“使用扫描仪从输入文件中读取两行”,您必须一步一步地将问题分解为更小的部分,这就是软件开发人员所做的方式。

好吧,我有一个 progz,它以某种方式为我工作,只是找到包含某些内容的行,然后将它们打印出来,即使我有一部分,所以对于这样的事情来说,这是蛮力:

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

}

关于java - 使用 Scanner 从输入文件中读取两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17891695/

相关文章:

java - 如何获得 jdbc 提交的解释分析?

java - Google App Engine (Java) 数据存储统计 API 导致错误

java - 在 docker 镜像中的 docker 上安装 Java

java - 使用java Dynamodb按非主键获取数据

java - 在 ArrayDeque 中同时使用 push()、offer() 和 add() 方法会发生什么?

Java 双重溢出

Jtextfield 的 Java Swing 圆形边框

java - Apache HttpClient 负载平衡池连接

java - Spring boot + angular 2 Heroku部署

Java输入字母