Java 不间断输出
我正在运行搜索同义词的代码。不幸的是,输出返回非停止循环,如下所示Java 不间断输出,java,loops,Java,Loops,我正在运行搜索同义词的代码。不幸的是,输出返回非停止循环,如下所示 Synonym 0: pupil Synonym 0: student Synonym 0: pupil Synonym 0: student Synonym 0: pupil Synonym 0: student Synonym 0: pupil Synonym 0: student Synonym 0: pupil . . . 我错过什么了吗。我尝试将检索到的同义词存储在临时变量中,以停止无限循环。但是,它
Synonym 0: pupil
Synonym 0: student
Synonym 0: pupil
Synonym 0: student
Synonym 0: pupil
Synonym 0: student
Synonym 0: pupil
Synonym 0: student
Synonym 0: pupil
.
.
.
我错过什么了吗。我尝试将检索到的同义词存储在临时变量中,以停止无限循环。但是,它不起作用。有人能帮我吗
public class GUIsynonym extends JFrame implements ActionListener
{
public void displaySynonym()
{
//call wordnet library
RiWordnet wordnet = new RiWordnet();
String word = lineTF.getText();
//new search
Vector<String> newVec = new Vector<String>();
String[] synset = wordnet.getAllSynsets(word, "n");
for (int k=0; k<synset.length; k++)
{
newVec.add(synset[k]);
System.out.println(newVec.toArray());
synset[k] = new String();
for(int i=0; i<newVec.size(); i++)
{
int cP = newVec.indexOf(newVec.get(i));
if(cP !=i)
{
newVec.remove(cP);
}
}
printSynset(word);
}
printSynset(word);
String outputSynset = "Word: " + word;
GUIsynonymTA.append("\n");
GUIsynonymTA.append(outputSynset);
GUIsynonymTA.append("\n");
}// end displaySynonym()
public static String printSynset(String word)
{
//call wordnet library
RiWordnet wordnet = new RiWordnet();
//call stemmer method
PorterStemmer s = new PorterStemmer();
Vector<String> synsetVec = new Vector<String>();
String[] synset = wordnet.getAllSynsets(word, "n");
for (int k=0; k<synset.length; k++)
{
synsetVec.add(synset[k]);
if (!synsetVec.isEmpty())
{
for (int j = 0; j < synsetVec.size(); j++)
{
LinkedHashSet<String> unique = new LinkedHashSet<String>();
LinkedHashSet<String> dups = new LinkedHashSet<String>();
Vector<String> newVec = new Vector<String>();
for (String a : synsetVec)
if (!unique.add(a))
{
dups.add(a);
System.out.println("Duplicate detected: " + a);
}
else
{
Iterator<String> it = unique.iterator();
while(it.hasNext())
{
unique.removeAll(dups);
GUIsynonymTA.append("\n");
GUIsynonymTA.append(" Synonym " + j + ": " + it.next());
GUIsynonymTA.append("\n");
newVec.add(a);
unique.addAll(newVec);
unique.removeAll(newVec);
printSynset(synsetVec.get(j));
}
}
}
}
else
GUIsynonymTA.append("No synsets");
//if (synsetVec.isEmpty())
//return word;
}
return word;
}//end printSynset()
谢谢。编辑
我编辑了你的问题,使用
另外,在使用唯一集合的迭代器时,可以对其进行更改。这将导致未定义的行为。这是什么:对于int k=0;k unique=新的LinkedHashSet;?你的密码好像坏了。它甚至不会编译。谢谢..实际上我已经尝试删除printSynsetsynsetVec.getj;而且输出似乎还可以。但是,这不是我想要的。我希望输出是这样的。。搜索词:学生语法集0:学生语法集0:学生语法集0:学生。Synset 1:educatee Synset 2:School Child Synset 1:educatee Synset 2:Schoor Synset 3:bookman这就是我尝试存储在临时变量中的原因。
printSynset(synsetVec.get(j));