2016-04-13 6 views
-3

Я работаю над школьным проектом, и я пытаюсь написать программу на C#, которая позволит пользователю вводить общий объем продаж. Мне нужно взять общий объем продаж и рассчитать его по profitRatio следующим образом:return a% in C# with if statements

totalSales      profitRatio 
0-$1,000:       3% 
$1,000.01-%5,000     3.5% 
$5,000.01-$10,000     4% 
Over 10,000       4.5% 

Следующим шагом будет вычислить общий объем продаж в% категории, что соответствует и хранить эти данные. Я также хочу отобразить коэффициент прибыли%, используемый для пользователя вместе с новой прибылью. Будут ли «если тогда» заявления работать, чтобы сделать это, если они написаны так?

private decimal ReturnRatio() 
{ 
    if (totalSales > 0 && totalSales < 1000) 
    { 
     profitRatio = .03M; 
    } 
    else if (totalSales >= 1000.01 && totalSales < 5000) 
    { 
     profitRatio = .035M; 
    } 
    else if (totalSales >= 5000.01 && totalSales <= 10000) 
    { 
     profitRatio = .40M; 
    } 
    else if (totalSales < 10000) 
    { 
     profitRatio = .045M; 
    } 
} 
+2

"Будет ли" если тогда "заявления работать, чтобы сделать это, если написано так?". Запустите код и убедитесь сами. Если после этого вы не уверены, тогда плюньтесь в точку останова и снова запустите его с помощью отладки. – Tdorno

+0

Мой сладкий летний ребенок :). Вы используете 3 разных типа данных там, где вы должны использовать только один. Сделайте все ваши номера завершенными в M. – hoodaticus

+1

найдите способ использования функции 'string.Format' и либо измените тип возврата на строку с форматированным значением с помощью'% ', также вы знаете, что текущий код будет генерировать потому что у вас нет 'return profitRatio', например' var dValue = string.Format ("{0: 0.0%}", .03M); 'в вашем случае вы измените .03M с помощью profitRatio в строке. Функция форматирования 'var dValue = string.Format (" {0: 0.0%} ", profitRatio);' – MethodMan

ответ

0

В последней ветви, else if (totalSales < 10000) вы позволили бы в цифрах, которые <= 0>. Я думаю, что последняя ветка должна быть else if (totalSales > 10000).

Ну, последняя ветка должна, вероятно, действительно быть инструкцией else, которая обрабатывает другие суммы, так как пользователю разрешено вводить суммы. Например:

else if (totalSales > 10000) 
{ 
    profitRatio = .045M; 
} 
else 
{ 
    Console.WriteLine("You entered an invalid amount."); 
} 
+0

Спасибо, что указали мой тип O, я также благодарен за ввод. Спасибо! –

0

Если тогда заявления будут работать, но если бы я был вашим учителем, я бы надеялся на большее. Вам следует подумать о создании класса Range с полем Min и поле для Max, а затем создать объекты для представления каждой категории.

Поместите эти объекты Range в коллекцию, например List, затем выполните цикл foreach, чтобы пройти через каждый объект Range отдельно.

Если бы это был код в корпоративной системе, я бы охотился за вами, если это не был горячий цикл в некоторых экстремальных играх.

+2

У ОП есть вопрос о заявлениях 'if', и вы критикуете за то, что не достойны предприятия? Каждый должен начать где-то - если код _works_, я не вижу веских оснований для столь резких изменений на этом уровне. –

+1

Благодарим вас за предложение hoodaticus, к сожалению, у меня недостаточно знаний о предложении foreach: «Мы еще не узнали об этом» и как правильно его использовать, поэтому я участвую в процессах поиска. Если вы не возражаете поделиться примером своего предложения, я бы очень признателен ему. Я не прошу решить всю проблему для меня, достаточно, чтобы получить хорошую базовую идею вашего предложения. –

+0

LOL @ D Stanley. Вы просто расстроены из-за того, что pwning вы получили по другому вопросу. – hoodaticus