2

我很抱歉,因为我总是问 n00b 问题,但我真的可以使用帮助。无论如何,我试图将只有一定长度的单词从字典中导入到作为散列集的变量 words 中。当我运行我的程序并尝试打印我的话,也就是字符串的哈希集。我在控制台中什么也没有,程序也没有停止运行。我怎样才能解决这个问题?PS 另外我知道 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 + " ");

        }

}
4

1 回答 1

3

关于:

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

        else
        {

        }

    }   

我不确定 words.add(importedWords) 的作用,但对您遇到的问题最重要,

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

我建议你先修复这个 while 循环

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

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

编辑
你状态:

捕获中仍有单词变化(NoSuchElementException q)

在 while 循环内没有发布 catch 块,因此我提交仍然不能根据您迄今为止发布的代码在 while 循环内更改 stillHasWords 值。如果您有更相关的代码,那么您当然会想要显示它,否则我们只能猜测未显示的代码可能有什么问题。最好发布SSCCE

于 2013-08-13T22:15:47.123 回答