从文本中导入单词

时间:2013-08-13 22:14:34

标签: java swing text hashset

我道歉,因为我总是问n00b问题,但我真的可以使用帮助。无论如何我试图从字典中导入只有一定长度的单词到变量单词,这是一个哈希集。当我运行我的程序并尝试打印我的单词,也就是字符串的hashset。我在控制台中什么也得不到,程序也没有停止运行。我怎样才能解决这个问题?附:另外我知道JOptionPane代码的一部分被剪掉了,但它没有错误,你明白了。谢谢! 亚历克斯

 public void inputWords()
  {
      try
       {
        frame = new JFrame("Hangman");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,300);
        frame.setVisible(true);
        input = new Scanner(new FileInputStream("dictionary.txt"));
        wordLength = Integer.parseInt(  JOptionPane.showInputDialog(null,                                                                        
        String importedWords = input.nextLine();
        while(stillHasWords==true)
        {   
            if(importedWords.length()==wordLength)
            {   
                words.add(importedWords);
            }

            else
            {

            }

        }   

    }   

    catch(FileNotFoundException f)
    {
        System.out.println("File does not exist.");
        System.exit(0);
    }

    catch(NoSuchElementException q)
    {
        stillHasWords=false;
    }


    public static void main(String[] args)
        {
    EvilHangman j = new EvilHangman();
    System.out.println(stillHasWords);
    j.inputWords();
    System.out.println(words + " ");

        }

}

1 个答案:

答案 0 :(得分:3)

关于:

    while(stillHasWords==true)
    {   
        if(importedWords.length()==wordLength)
        {   
            words.add(importedWords);
        }

        else
        {

        }

    }   

我不确定words.add(importedWords)是做什么的,但对你遇到的问题最重要的是

问题:你在哪里改变循环中的StillHasWords?
答:你没有,所以循环永远不会结束。

我建议你先修复这个循环

顺便说一下,最好避免在while循环中使用== true,而只是测试布尔值:

while (stillHasWords) {
  // add a word
  // change stillHasWords to false if we've run out of words
}

修改
你说:

  

catch中仍然有单词更改(NoSuchElementException q)

在while循环中没有发布的catch块,所以我提交的仍然是whileHatWords值在while循环内部根据你发布的代码到目前为止不能改变。如果你有更多相关的代码,那么你当然希望展示它,否则我们会减少猜测可能错误代码未显示。最好发布SSCCE