переключатель регистра в дротике не работает должным образом

Я пытаюсь использовать регистр переключения, но он ведет себя странно. Для некоторых входов это работает, а для некоторых входов это не работает. Я проверил входные значения и обнаружил, что они подходят для выполнения условия. Пожалуйста помоги. Я новичок в трепыхании и дартсе.

Я пытался добиться этого с помощью if-else if. Даже это не сработало для меня.

    List<String> lstNames = List<String>();
    lstNames.addAll(["Dividends INR", "Payout Ratio % *", "Operating Cash Flow INR Mil", "Cap Spending INR Mil", "Free Cash Flow INR Mil"]);
    for(String ItemHeading in lstNames){

    switch (ItemHeading) {
      case '' :
        break;
      case 'Dividends INR':
        {/*Doing something.*/}
        break;
      case 'Payout Ratio % *':
        {/*Doing something.*/}
        break;
      case 'Operating Cash Flow INR Mil':
        {/*Doing something.*/}
        break;
      case 'Cap Spending INR Mil':
        {/*Doing something.*/}
        break;
      case 'Free Cash Flow INR Mil':
        {/*Doing something.*/}
        break;
      default:
        break;
    }
  }

В приведенном выше коде на основе строк в lstNames я пытаюсь запустить случай переключения. Строковые значения, содержащиеся в Elements в lstRows, представляют собой {Дивиденды INR, Коэффициент выплат % *, Операционный денежный поток, млн INR, Предельные расходы, млн INR, Свободный денежный поток млн INR}. Случай с «Коэффициентом выплат % *» работает. В остальном он просто пропускает/переходит к следующему делу и завершает работу. Пожалуйста помоги. Дайте мне знать, если для отладки требуется дополнительная информация.


person Abhijeet Kharatmol    schedule 01.05.2019    source источник


Ответы (1)


РЕДАКТИРОВАТЬ: addAll() берет iterable

lstNames.addAll(["Dividends INR", "Payout Ratio % *", "Operating Cash Flow INR Mil", "Cap Spending INR Mil", "Free Cash Flow INR Mil"]);

поместить элементы в список.


Вы используете неправильные комментарии

// комментирует всю строку, а также заключительную }

/* */ для использования

  case 'Dividends INR':
    {/*Doing something.*/}
    break;
  case 'Payout Ratio % *':
    {/*Doing something.*/}
    break;

дартланг

person Doc    schedule 01.05.2019
comment
Кроме того, нет необходимости в случае break после default. - person Doc; 01.05.2019
comment
Я внес правки. Комментарии были даны только для замены бизнес-логики. Проблема переключателя случая все еще там. Он работает для «Коэффициента выплат % *», но не для остальных случаев. Пожалуйста помоги. - person Abhijeet Kharatmol; 01.05.2019
comment
Кроме того, похоже, что у вас есть новая строка внутри Operating Cash Flow INR Mil, которая вызывает проблему. - person Doc; 01.05.2019
comment
Эй, прости за это. Этот addAll() также предназначен для сокрытия бизнес-логики. Я сделал правку. Список lstNames в порядке. Проблема в том, что когда элемент управления входит в случай переключения, я ясно вижу в отладке, что значение, содержащееся в ItemHeading, является постоянным значением случая, которое должно его удовлетворять, и дело должно быть выполнено. Тем не менее он прыгает по делу и переходит к следующему делу. - person Abhijeet Kharatmol; 01.05.2019
comment
Вы исправили новую строку, упомянутую в моем предыдущем комментарии? - person Doc; 01.05.2019
comment
Этот кусок кода работает просто отлично. Но тот же кусок кода с моей бизнес-логикой пропускает операторы case. Понятия не имею почему. Я также пробовал .compareTo(), но все же он не вводит операторы case. - person Abhijeet Kharatmol; 01.05.2019
comment
Этот код правильный. Проблема, описанная в stackoverflow.com/questions/55937845/, заключается в том, что строка ItemHeading содержит символы, отличные от ожидаемых кодом. Итак, swtich работает. - person lrn; 02.05.2019