我道歉,因为我总是问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 + " ");
}
}
答案 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