Java Основи на програмирането: Търговски комисионни / Trade Commissions
Моля, някой колега да даде работещо решение на следната задача:
" 10. Търговски комисионни
Фирма дава следните комисионни на търговците си според града, в който работят и обема на продажбите s:
Град 0 ≤ s ≤ 500 500 < s ≤ 1 000 1 000 < s ≤ 10 000 s > 10 000
Sofia 5% 7% 8% 12%
Varna 4.5% 7.5% 10% 13%
Plovdiv 5.5% 8% 12% 14.5%
Напишете конзолна програма, която чете име на град (текст) и обем на продажби (реално число) , въведени
от потребителя, и изчислява и извежда размера на търговската комисионна според горната таблица.
Резултатът да се изведе форматиран до 2 цифри след десетичната точка. При невалиден град или обем на
продажбите (отрицателно число) да се отпечата "error".
Примерен вход и изход
вход изход вход изход вход изход вход изход
Sofia
1500 120.00 Plovdiv
499.99 27.50 Varna
3874.50 387.45 Kaspichan
-50 error "
Благодаря!
А защо моя код е грешен и ми прави false Варна и Пловдив???
Защо стойностите ги караш в низходящ ред, какво е предимството?
Защо се налага да употребиш boolean за всичко, което ще се въведе грешно?
Исках да знам причината за всичко това, а не само да приписвам.
Сърдечно благодаря!!!
Не знам в какво IDE пишеш, но ако е intelliJ, както е по програма в Java basics, би трябвало да ти оцвети или подчертае по някакъв начин проверките за "Varna" и "Plovdiv", че са винаги false... или нещо от сорта. Това е така, защото са ти вложени в проверката за "Sofia"... ако хванеш къдравата скоба след if (city.equals("Sofia")) { <- тази, ще видиш къде се затваря, и че другите две за град са вложени в нея. Не е като да не може да се реши без boolean, но в Java-та има switch за разлика от Python, на който пиша по принцип и тъй като има и default към switch-a, а булевите са нещо много хубаво, което ни улеснява живота, а по условие трябва да се провери дали града е валиден - съм му сложил тази default стойност, която виждаш в решението ми. Последно за проверките и техния ред - въпрос на предпочитание е... това как ти изглежда най-лесно и най-логично за конструиране. Когато почнеш от голямо към малко можеш да правиш проверка само за ">" без да проверяваш дали числото е в някакъв диапазон. Няма особено значение като цяло...
На Python може да се направи нещо от сорта на:
Може и при градевете да сложиш else и направо да принти 'error' и накрая да проверяваш за валиден профит и пак да принтиш 'error', но сигурно ще има проблем ако и двете са невалидни - ще се изпринти два пъти 'error'... Пробвай различни неща и ще видиш кое работи и кое не.