2

私はいつもn00bの質問をしているので申し訳ありませんが、私は本当に助けを使うことができました. とにかく、特定の長さの単語のみを辞書からハッシュセットである変数の単語にインポートしようとしています。プログラムを実行して、文字列のハッシュセットとも呼ばれる単語を出力しようとすると。コンソールに何も表示されず、プログラムの実行が停止しません。どうすればこれを修正できますか? 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 に答える