我可能沒有比我更應該有,甚至可能使它過於複雜。但我會讓你們決定。
我做的第一件事就是使用HashSets來存儲匹配和不匹配的值。這很有用,因爲它們只存儲每個值中的一個。
String[] number_one = { "[email protected]" , "+122637867" , "486" , "smbr" , "9946567" };
String[] number_two = { "+122637867" , "486" , "nrkZone" , "smbr"};
HashSet<String> matched = new HashSet<String>();
HashSet<String> mismatched = new HashSet<String>();
現在我有很多循環,這部分我想你可以簡化成也許只是一個。但是,唉,它的工作。現在至爲什麼。那麼,這種代碼的工作方式是,假設數組中的所有值都沒有匹配,除非證明相反。所以它只是把它們放到了mismatched
HashSet中。
for (int i = 0; i < number_one.length; i++) {
mismatched.add(number_one[i]);
}
for (int i = 0; i < number_two.length; i++) {
mismatched.add(number_two[i]);
}
現在你需要嵌套兩個for循環,通過兩個陣列迭代,並在這個過程中檢查是否存在任何匹配,如果有一個,它被添加到matched
HashSet的。
for(int n = 0; n < number_one.length; n++) {
for (int m = 0; m < number_two.length; m++) {
if(number_one[n].equals(number_two[m])){
matched.add(number_one[n]);
}
}
}
現在,我們只是刪除了所有我們知道的有來自mismatched
變量,它已經擁有了所有可能的值相匹配的值。我們只是刪除我們所知道的匹配。
for (int i = 0; i < matched.size(); i++) {
mismatched.remove(matched.toArray()[i]);
}
在這裏,我們只是打印出一個半整潔的時尚。
System.out.print("Matched: ");
for (int i = 0; i < matched.size(); i++) {
System.out.print(matched.toArray()[i] + " ");
}
System.out.println("");
System.out.print("Mismatched: ");
for (int i = 0; i < mismatched.size(); i++) {
System.out.print(mismatched.toArray()[i] + " ");
}
你到底想要什麼結果? –
使用「equals」來比較字符串值。同樣,因爲你的代碼是,你將只匹配令牌,如果他們在陣列中具有相同的位置。它是你想要的嗎? – Berger
不,我想找到匹配的字符串從兩個陣列和無與倫比的字符串.. @HojjatImani –