gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:31:46 25 4
gpt4 key购买 nike

嗨,我整个夏天正在上编程课,需要创建一个从文件读取输入的程序。输入文件包括 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com