2016-03-08 59 views
-1

我有兩個arraylists的名稱。我試圖比較兩者。如果第一個數組中的名稱等於第二個數組中的名稱,我想創建一個名爲「name j」的文本文件,其中j是找到匹配名稱的索引。現在它似乎能夠找到兩個匹配的名稱,但不是最後一個。我不知道爲什麼它沒有找到最後一個。比較兩個數組列表,然後將匹配添加到特定的文本文件

這裏是我的代碼:

ArrayList <String> names = new ArrayList(); 
     names.add("Stephen"); 
     names.add("James"); 
     names.add("Billy"); 
     names.add("Connor"); 
     names.add("Katie"); 

     ArrayList <String> names2 = new ArrayList(); 
     names2.add("Carlos"); 
     names2.add("Katie"); 
     names2.add("James"); 
     names2.add("Cameron"); 
     names.add("Blly"); 

     int i,j; 
     i=0; 
     j=0; 

     int nameSize = names.size(); 
     int names2Size = names2.size(); 
     int checkMatches=0; 
     // boolean endOfList = false; 

     while (i<nameSize) { 
      if (names.get(i).equals(names2.get(j))) { 
       //increase i b/c of match 
       System.out.println("Match " + names.get(i)); 
       infoToFile(j,i,names); 
       i++; 
      } else if (j == names2Size-1) { 
       System.out.println("No Match"); 
       i++; 
       j=0; 
      } else { 
       System.out.println("No Match"); 
       j++; 
      } 
     } 

public static void infoToFile(int j,int i,ArrayList <String> names) { 
     Writer output; 
     try { 
      output = new BufferedWriter(new FileWriter("name " + j + ".txt",true)); 
      output.append(names.get(i) + "\n"); 
      output.close(); 
     } catch (IOException ex) { 
      Logger.getLogger(RosterPractice.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

回答

0

所以,你可以通過許多不同的方式做到這一點,但我會告訴你我是如何做(和測試):

首先你需要檢查哪個列表比其他列表大,否則你會得到一個indexOutOfBoundsException 之後,做一個超過最小的列表,檢查字符串是否相同,如果滿足,調用該方法創建一個文件並傳遞參數,然後名稱的文件克里特島(我做它通過索引和名稱,但你可以通過傳遞它們的串聯)

代碼示例:

public static void main(String[] args) { 
    List<String> names = new ArrayList<String>(); 
    names.add("Stephen"); 
    names.add("Sepp"); 
    names.add("James"); 
    names.add("Billy"); 
    names.add("Connor"); 
    names.add("Katie"); 
    System.out.println(names); 

    List<String> names2 = new ArrayList<String>(); 
    names2.add("Carlos"); 
    names2.add("Sepp"); 
    names2.add("Katie"); 
    names2.add("James"); 
    names2.add("Cameron"); 
    names2.add("Blly"); 
    names2.add("Xoce"); 
    names2.add("Marie"); 
    System.out.println(names2); 

    if (names.size() > names2.size()) { 
     for (int i = 0; i < names2.size(); i++) { 
      if (names.get(i).equals(names2.get(0))) { 
       createFile(i, names.get(0)); 
      } 
     } 
    } else { 
     for (int i = 0; i < names.size(); i++) { 
      if (names.get(i).equals(names2.get(i))) { 
       createFile(i, names.get(1)); 
      } 
     } 
    } 
} 

private static void createFile(int i, String name) { 
    File f = new File(name + "_" + i); 
    try { 
     f.createNewFile(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 
+0

你爲什麼要發佈兩個答案? –

相關問題