如何临时暂停while循环

时间:2011-02-20 18:15:39

标签: java loops while-loop suspend

我正在编写拼写检查程序,它检查某些.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
    }
}

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

一种简单的编码方法是使用Kirk的建议,通过起始位置参数化函数。