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));