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 语句。它正确到达那里。我用印刷来看看应该写什么,那部分是正确的。成员是一个空的哈希图,但只有一个循环的迭代将进入第一个 if 语句,而大多数应该进入它。

4

1 回答 1

0

使用标签可以解决您的问题。因为第二个循环的任何一次迭代都可以清空您的成员。尝试这个

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 回答