как временно приостановить цикл while

Я пишу программу проверки орфографии, которая проверяет каждое слово в некотором .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
    }
}

person Nazerke    schedule 20.02.2011    source источник
comment
По упоминанию JList и синтаксису вашего примера я предполагаю, что это в java. Вы должны отредактировать это, чтобы добавить «java» к тегам. Кроме того, если вы выделите закодированную область и щелкнете по значку «{}», код будет заключен в теги «pre» и его будет легче читать.   -  person jk.    schedule 20.02.2011
comment
Пожалуйста, ознакомьтесь с ответами в кросс-посте: как-временно-приостановить-пока-цикл   -  person Hovercraft Full Of Eels    schedule 20.02.2011


Ответы (2)


«Приостановка» цикла while не является правильным подходом. Вместо этого ваш алгоритм проверки орфографии должен быть параметризован так, чтобы вы могли указать, с чего начать (так же, как indexOf предлагает перегрузку, которая позволяет вам указать, где должен начинаться поиск).

Затем, где у вас сейчас есть комментарий suspend loop until "next" button is pressed, вы должны просто выйти из метода. Затем, при следующем нажатии кнопки «Далее», вы снова запускаете программу проверки, передавая в этот метод позицию в файле, на которой вы остановились. (В качестве альтернативы вы можете сохранить эту позицию в поле вашего класса.)

person Kirk Woll    schedule 20.02.2011

Я думаю, что самый простой способ сделать что-то подобное - закодировать цикл в стиле передачи продолжения (выборочно, поскольку Java не поддерживает настоящие хвостовые вызовы). По сути, вы передаете функцию (или Runnable в Java) коду, который подсказывает пользователю его выбор, и как только пользователь делает свой выбор, выполняете функцию/runnable. Это хорошо работает, когда вы переключаетесь между потоком событий и рабочими потоками.

Простой способ закодировать это — использовать предложение Кирка о параметризации функции начальной позицией.

person Gregory    schedule 20.02.2011