1

こんにちは、夏の間プログラミングのクラスに参加していて、ファイルから入力を読み取るプログラムを作成する必要があります。入力ファイルには DNA シーケンス ATCGAGG などが含まれ、ファイルの最初の行には、比較する必要があるシーケンスのペアの数が示されています。残りはシーケンスのペアです。クラスでは、Scanner メソッドを使用してファイルから行を入力します (bufferedReader について読みましたが、クラスでは説明していないため、慣れていません)、2 つの行を比較する方法に関するコードの書き方についてはわかりません。同時にスキャナー方式。

私の試み:

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
4

1 に答える 1

0

まず、あなたがしている理由:

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

ペアと2行の入力ではなく、1行にのみペアがありますが、一度に行数はありますか? ループ中に読み取りペアを移動し、それを int に解析します。問題はありませんが、行数がわかっている場合は、それを使用して行の読み取りを停止できます。

2番:

throws IOException

関係ないかもしれませんが、実際には try catch のやり方がわからず、例外を気にしない場合はスキップするとしましょう。

比較、文字列を読み取る場合、文字列には「equals」メソッドがあり、2 つの文字列を比較できます。

Google はこれらの問題を解決することはできません。すべてを知っているわけではありませんが、知りたい場合は、Google で「string comparision java」と入力するなどの基本的なことを検索してください。解決策が見つかるとは思わないでください。 Scanner を使用して入力ファイルから 2 行を Google に読み込むには、段階を追って問題を細かく分割する必要があります。これが、ソフトウェア開発者が行っている方法です。

わかりました私はどういうわけか私のために働いた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;    
}

}
于 2013-07-26T23:11:05.430 に答える