2016-11-28 5 views
0

今年は誰が贈り物を買っているのかを知るために、リスト内の人にランダムにマッチするプログラムを作ろうとしています。2つの同一リスト内の2つのオブジェクトがJavaで一致するのを防ぐ

私が遭遇している問題は、結婚しているために特定の人がマッチできないということです。たとえば、デアナとピートは一致しないし、クリスとリンゼイもできません。

ここでは、これらのマッチアップを防止しようとすることなく、私は今何をしています。

Map<String, String> couples = new HashMap<>(); 
couples.put("Deana", "Pete"); 
couples.put("Chris", "Lindsay"); 

その後、彼らがカップルしているかどうかを確認するためにあなたのifを更新:それをする

if(!family[i].equals(perTst) 
     && !perTst.equals(couples.get(family[i])) 
     && !family[i].equals(couples.get(perTst))) { 
    //... 
} 
+1

javaの文字列を比較するときは、String equals()関数を使用してください。http://docs.oracle.com/javase/7/docs/api/java/lang/String.html –

+2

何が問題になっていますか? – Gendarme

+0

@RAZ_Muh_Taz配列が重複する可能性がある場合を除き、この場合、IDの比較はかなり安全です。 – shmosel

答えて

0

をありがとう彼らと一致できない人のセットへの人々のマップを作成することです。たとえば:

Map<String, Set<String>> notAllowed = new HashMap<>(); 
Set<String> deanaSet = new HashSet<>(); 
deanaSet.put("Pete"); 
Set<String> peteSet = new HashSet<>(); 
peteSet.put("Deana"); 
... 
notAllowed.put("Deana", deanaSet); 
notAllowed.put("Pete", peteSet); 

次に、あなただけの、ユーザーごとに許可されていないマッチのセットを取得し、あなたが追加提案している人が許可されていないユーザの集合であるかどうかを確認することができます。

+0

ありがとう、私はまだかなりjavaに新しいしているだけで非常に簡単に地図に触れた。 –

0

一つの方法 ちょうどカップルのマップを作成し、

 String[] family = {"Jen", "Chris", "Lindsay", "Erica", "Deana", "Pete"}; 
    ArrayList people = new ArrayList<String>(); 
    for(int i = 0; i<family.length; i++){ 
     people.add(family[i]); 
    } 

    int i=0; 
    while (i != family.length) { 
     int personTwo = (int) Math.floor(Math.random() * people.size()); 
     String perTst = people.get(personTwo).toString(); 
     if((family[i] != perTst)){ 

      System.out.println(family[i] +" buys for " + people.get(personTwo)); 

      people.remove(personTwo); 
      i++; 
     } 


    } 
関連する問題