2015-02-07 4 views
-9
if (intDaysOverdue <= 30) 
{ 
      decInterestRate = 0m; 
} 
else if (intDaysOverdue >= 30 && intDaysOverdue <= 59) 
{ 
      decInterestRate = .5m; 
} 
else if (intDaysOverdue >= 60 && intDaysOverdue <= 89) 
{ 
      decInterestRate = .10m; 
} 
else if (intDaysOverdue >= 90) 
{ 
      decInterestRate = .15m; 
} 

Мне нужно написать эту информацию, используя switch заявление, но не могу показаться, чтобы выяснить, какзаявления переключатель Запись с использованием целых чисел

+0

Я не могу придумать способ использования 'switch'-'case' здесь. –

+1

Что вы пробовали? Кроме того, вы уверены, что вам нужно написать это как оператор switch? – zneak

+2

Вы не можете использовать переключатель для этого. Зачем вам «нужно»? –

ответ

1

Вы не можете делать то, что вы хотите с switch, но вы можете упростить чтобы:

if (intDaysOverdue <= 30) 
    decInterestRate = 0m; 
else if (intDaysOverdue <= 59) 
    decInterestRate = .5m; 
else if (intDaysOverdue <= 89) 
    decInterestRate = .10m; 
else 
    decInterestRate = .15m; 

не нужны Ваши >= 30 и >= 60 условия, так как они уже правда из-за предшествующее если заявления.

Коммутатор/корпус больше подходит для определенных значений, а не для диапазонов. Это -, для чего предназначена инструкция if.

Если увеличивается процентная ставка 0,5 за каждые 30 дней, подобно тому, как @EZI предложил в комментариях, вы могли бы еще больше упростить код для:

decInterestRate = ((int)Math.Min(intDaysOverdue, 90) /30) * .5; 
+0

спасибо. я понял это – user4338480

+0

@ user4338480 Нет проблем, если это поможет, отметьте его как принятый ответ, установив галочку рядом с ним. – Cyral

+0

Дайвингеры ум комментирует? – Cyral

0

вы не можете использовать переключатель здесь (вы можете манипулировать им по умолчанию, но зачем это делать?) и case предназначены для проверки отдельных значений, для вашего состояния требуется инструкция if.