0
for (int i = 0; i < pac.length; i++)
{
   for (int j=0;j<mem.length;j++)
   {
      String[] words = mem[j].split(" ");
      for (int k = 1; k < words.length; k++)
      {
        if (words[k].equals(pac[i])
        {                          //done system.out.println here and it's right
            if (!members.containsKey(pac[i]))          //won't enter this if correctly
            {
               members.put(pac[i], " " + words[0]);      
            }
            else
            {
               String old = members.get(pac[i]);
               members.put(pac[i], old + " " + words[0]);
            }
        }
        else
        {
            members.put(pac[i], "");
        }
      }
   }
}

組織のリストを含む配列 pac を取得するコードが必要であり、その後に組織を持つ人々の名前のリストが必要です。それらをメンバーのハッシュマップに入れる必要があります。ただし、ifステートメントを正しく入力できないようです。正しくそこに到達します。印刷を使用して、何が入るかを確認しましたが、その部分は正しいです。メンバーは空のハッシュマップですが、ループの反復は 1 つだけですが、ほとんどが最初の if ステートメントに入る必要があります。

4

1 に答える 1

0

問題を解決できるラベルを使用してください。2番目のループのいずれかの反復でメンバーが空になる可能性があるためです。これを試して

for (int i = 0; i < pac.length; i++) {
            action: 
            for (int j = 0; j < mem.length; j++) {
                String[] words = mem[j].split(" ");
                for (int k = 1; k < words.length; k++) {
                    //System.out.println(words[0] + "ttt");
                    if (words[k].equals(pac[i])) { 
                        System.out.println(words[k]);
                        if (!members.containsKey(pac[i]))  
                        {
                            members.put(pac[i], " " + words[0]);
                            break action;
                        } else {
                            String old = members.get(pac[i]);
                            members.put(pac[i], old + " " + words[0]);
                            break action;
                        }
                    } else {
                        members.put(pac[i], "");
                    }
                }
                }
}

組織の代わりにメンバーのキーとして人を使用します。組織にはより多くの人がいるからです。

于 2013-11-11T08:17:37.647 に答える