2016-04-12 7 views
0

10 dizeyle bir dosyam var - her dizede 1 satır - ve LCS'yi çalıştırmalı ve her karşılaştırmanın LCS ve LCS uzunluğunu almalıyım, örneğin, String 1 ile String 2, Dize 1 ile Dize 1, Dize 1 ile Dize 4 ve her dize geçene kadar devam eder ve daha sonra Dize 2'ye artırır ve tüm bu işlemlerden geçinceye kadar bu işlemi tekrarlar.LCS algoritması 10 dizgilerle bir dosya üzerinden çalışır

Daha kolay hale getirmek için her dizeyi bir ArrayList'e başarıyla ekledim, ancak şimdi söz konusu dizeleri birbiriyle karşılaştırmaya çalışırken sorun yaşıyorum. Artış olmadığım bir iç içe geçmiş döngü kullanmam gerektiğini düşünüyorum tüm listeye geçene kadar, o zaman artar.

Herhangi bir yardım için teşekkür ederiz. Ve bu şu ana kadar sahip olduğum kod.

 public static void main(String[] args) { 

     List<String> Collection = new ArrayList<>(); 
     String FirstLine = null; 
     int i; 

     File Temp1 = new File("CollectionSeqs/listSeqs-consensustest-errorhigh-l10.nsol_win.txt"); 

     try{ 
      InputStream fis = new FileInputStream(Temp1); 
      BufferedReader br = new BufferedReader(new InputStreamReader(fis)); 

      for (String line = br.readLine(); line != null; line = br.readLine()) { 
       Collection.add(line); 
       System.out.println(line); 
      } 
      br.close(); 
     } 
     catch(Exception e){ 
      System.err.println("Error: Target File Cannot Be Read"); 
     } 

cevap

0

İç içe geçme döngüsünü kullanmak için yaklaşımınızda haklısınız. Bu, bunu nasıl yapabileceğinizdir.

for(int i=0;i<Collection.size();++i) 
{ 
    String s1=Collection.get(i); 
    for(int j=i+1;j<Collection.size();++j) 
    { 
    String s2=Collection.get(j); 
    run the LCS for string s1 and s2 
    } 
} 
+0

Teşekkürler! Bu kesinlikle yardımcı olur! .size() yerine .length() kullanıyordum – StrugglingEngrStudent

İlgili konular