我正在编写拼写检查程序,它检查某些.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
}
}
答案 0 :(得分:3)
“暂停”while循环不是正确的方法。相反,您的拼写检查算法应该参数化,以便您可以指定从哪里开始(与indexOf
提供允许您指定搜索应该从哪里开始的重载的方式相同)。
然后,如果您当前有评论suspend loop until "next" button is pressed
,则应该退出该方法。然后,下次按下“下一步”按钮时,再次启动检查器,将该文件中的位置传递给该方法。 (或者,您可以将该位置存储在班级的某个字段中。)
答案 1 :(得分:1)
我认为这样做最简单的方法是以连续传递方式编写循环(因为Java不支持真正的尾调用)。基本上,您将一个函数(或Java中的Runnable)传递给提示用户选择的代码,一旦用户做出选择,执行函数/ runnable。当你在事件线程和工作线程之间来回弹跳时,这很有效。
一种简单的编码方法是使用Kirk的建议,通过起始位置参数化函数。