有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用扫描器从输入文件中读取两行

嗨,我在一个编程课上度过了一个夏天,我需要创建一个从文件中读取输入的程序。输入文件包括DNA序列ATCGAGG等,文件的第一行说明需要比较多少对序列。其余的是成对的序列。在课堂上,我们使用Scanner方法输入文件中的行(我读过关于bufferedReader的文章,但我们没有在课堂上讨论过它,所以不熟悉它),但我不知道如何编写代码,如何同时比较Scanner方法中的两行

我的尝试:

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) 个答案

  1. # 1 楼答案

    首先,你为什么要这样做:

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

    虽然一行中只有对,而不是对和两行输入,而是一次的行数?当looop时,将读对从这个位置移到int,然后将其解析为int,这无关紧要,但如果您知道有多少行,您可以使用它来停止读行

    第二:

    throws IOException
    

    可能与此无关,但如果你不关心异常,你真的不知道如何进行try-catch和skip吗

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

    谷歌不会帮你解决这些问题,你只是不知道它的全部,但如果你想知道,那么在谷歌搜索基本的东西,比如键入“字符串比较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;    
    }
    
    }