0

我正在编写拼写检查程序,它检查一些 .txt 文件的每个单词。它在到达文件末尾时读取文件,当它发现不正确的单词时,它会建议 JList 中的正确变体。用户选择一个并按下“下一步”按钮。然后它继续阅读和搜索不正确的单词。

while(EOF is not reached)
{
    check(word);//this returns array of suggestions

    if("next" button is pressed)
    {
        list.getSelectedWord() and continue while loop
    } else {
        suspend loop until "next" button is pressed
    }
}
4

2 回答 2

3

“暂停”while循环不是正确的方法。相反,您的拼写检查算法应该被参数化,以便您可以指定从哪里开始(以同样的方式indexOf提供允许您指定搜索应该从哪里开始的重载)。

然后,在您当前有评论的地方suspend loop until "next" button is pressed,您应该简单地退出该方法。然后,下次按下“下一步”按钮时,您将再次启动检查器,将您离开的文件中的位置传递给该方法。(或者,您可以将该位置存储在您班级的一个字段中。)

于 2011-02-20T18:32:30.950 回答
1

我认为执行此类操作的最简单方法是以连续传递样式对循环进行编码(选择性地,因为 Java 不支持真正的尾调用)。本质上,您将一个函数(或 Java 中的 Runnable)传递给提示用户选择的代码,一旦用户做出选择,就执行该函数/runnable。当您在事件线程和工作线程之间来回弹跳时,这很有效。

对此进行编码的一种简单方法是使用 Kirk 的建议,即按起始位置参数化函数。

于 2011-02-20T18:36:43.977 回答