输入带有hashmap条件的If语句

时间:2013-11-11 07:31:34

标签: java if-statement hashmap

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语句。它到达那里正确。我已经使用了打印来查看应该进入的内容,那部分是正确的。成员是一个空的hashmap,但是当大多数应该进入第一个if语句时,只有一个循环的迭代将进入第一个if语句。

1 个答案:

答案 0 :(得分: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], "");
                    }
                }
                }
}

并将人作为会员而不是组织的关键。因为一个组织有更多的人。