我搞不懂为什么围绕pacs.length构建的第二个for循环不断向集合中添加元素,即使这些元素不包含要在mems.contains中搜索的变量。我不能让代码不随意添加成员到集合中。显然,我看不出我错在哪里。
import java.io.*;
import java.util.*;
public class Trubl
{
public static void main( String args[] ) throws Exception
{
BufferedReader pacsFile = new BufferedReader( new FileReader( "pacs.txt" ) );
BufferedReader membersFile = new BufferedReader( new FileReader( "members.txt" ) );
TreeSet<String> memsSet = new TreeSet<String>();
TreeMap<String, TreeSet<String>> pac2mems = new TreeMap<String, TreeSet<String>>();
String[] pacs = new String [9];
int cnt = 0;
for(int i = 0; i < pacs.length; i++)
{
String pac = pacsFile.readLine();
pacs[i] = pac;
}
pacsFile.close();
Arrays.sort(pacs);
int j = 0;
while (membersFile.ready())
{
String mems = membersFile.readLine();
System.out.println(mems);
String[] splitter = mems.split("\\s+");
for (int i = 1; i < pacs.length; i++)
{
System.out.println(pacs[i]);
if (mems.contains(pacs[i]))
{
memsSet.add(splitter[0]);
}
System.out.println(memsSet);
}
pac2mems.put(pacs[j], memsSet);
j++;
}
membersFile.close();
for (cnt = 0; cnt < pac2mems.size(); cnt++)
System.out.println(pacs[cnt] + " " + pac2mems.get(pacs[cnt]));
} // END MAIN}
发布于 2014-07-26 06:14:49
if (mems.contains(pacs[i]))
{
memsSet.add(splitter[0]);
}如果mems包含该字符串,则会将其添加到memsSet。这是你想要的吗?
发布于 2014-07-26 07:17:27
如果您提供了一个正在发生的事情的示例,即示例输入文件和结果输出,那么回答起来会容易得多。
不过,我还是要大胆猜测一下。如果你的"pacsFile“中有一个空行,那么就会有一个空字符串的元素,在这种情况下,总是会有一个mems.contains(pacs[i])为真的i (一个字符串总是contains空字符串)。
https://stackoverflow.com/questions/24965224
复制相似问题