У меня возникли проблемы с выяснением того, как выйти из цикла, содержащего оператор switch. Разрыв выходит из переключателя, а не из петли.Вырыв из цикла while, который содержит оператор switch
Возможно, это более элегантное решение. Я реализовал флаг, который начинается как истинный и получает значение false и завершает цикл. Можете ли вы предложить лучшее решение?
Справочная информация: этот код используется в системе документооборота штрих-кода. У нас есть карманные компьютеры, в которых встроены сканеры штрих-кода. Этот код используется в одной из этих функций. Он запрашивает у пользователя разные данные во время процедуры. Эта часть позволяет им прокручивать некоторые записи инвентаря, отображающие эту информацию на терминале PocketPC (выгружаемые результаты) и позволяет им вводить «D» для «Готово», «Q», чтобы выйти.
Вот текущий C# пример, который должен быть улучшен:
do
{
switch (MLTWatcherTCPIP.Get().ToUpper())
{
case "": //scroll/display next inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextDown();
break;
case "P": //scroll/display previous inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextDown();
break;
case "D": //DONE (exit out of this Do Loop)
// break; // this breaks out of the switch, not the loop
// return; // this exists entire method; not what I'm after
keepOnLooping = false;
break;
case "Q": //QUIT (exit out to main menu)
return;
default:
break;
}
} while (keepOnLooping);
Вот пример кода, который делает это в VB.NET
Do
Select Case MLTWatcherTCPIP.Get().ToUpper
Case "" ''#scroll/display next inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextDown()
Case "P" ''#scroll/display previous inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextUp()
Case "D" ''#DONE (exit out of this Do Loop)
Exit Do
Case "Q" ''#QUIT (exit out to main menu)
Return
End Select
Loop
Спасибо,
Это выглядит хорошо для меня, переменной флаг является стандартным способом, чтобы проверить состояние контура. –
В Java (и некоторых других) ярлык цикла и использование [помеченного перерыва] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html) было бы самым простым ответом. –