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语句。
答案 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], "");
}
}
}
}
并将人作为会员而不是组织的关键。因为一个组织有更多的人。