[Homework] C# Basics Conditional Statements Problem 10 Beer Time решение с дати
Ето моят вариант за решение с използване на DataTime. Постарах се да обясня с кратки коментари, какво правя и защо го правя.
Ето моят вариант за решение с използване на DataTime. Постарах се да обясня с кратки коментари, какво правя и защо го правя.
Здравей, интересно решение. Малко си поусложнил парсването, няма нужда да прибавяш и изваждаш часове, направо си парсваш "3:00 AM" и просто в if-a ще проверяваш дали въведеното време е >= от 1:00 PM или < от 3:00 AM
Също така трябва да добавиш един try - catch , за да можеш да хванеш когато е въведено сгрешено време.
Задачата е добре, но трябва да имаш и TryParse, защото в условието пише, че ако времето не може да се парсне, т.е потребителят е подал нещо различно от DateTime, трябва да изписва “invalid time” .
Здравейте,
Признавам, че тази задачка я мислих малко повече. Не, че е толкова тежка, но исках да намеря правилният начин :)
Трябва да се внимава за въвеждане на неправилен формат на часа, също така трябваше да внимаваме с факта, че 1pm и 3am са в различни дни (3am е след полунощ), което мен ме спъна и реших да cheat-на малко (chuckle).
Ето това, което съм сътворил Поствам го за да събера мнения дали решението става и какво може да се промени към по-добро.
Beer Time: http://pastebin.com/ezWZ8ZZb
Благодаря предварително!
Cheers :)
Здравей, ако ползваш DateTime типове данни вместо Long , няма нужда да правиш проверка за полунощ, защото именно AM и PM прави тази проверка. А ако искаме да сме напълно коректни с проверката на правилния формат на въведения час ( в условието формата е “hh:mm tt” ) трябва да ползваме TryParseExact
Здравей,
Благодаря за отговора :)
Явнпроблема ми е бил в липсата на TryParseExact ().
Аз го правех с ParseExact ();
Ако имам време ще го преработя, сега работи коректно, но ще пробвам по друг начин :)
Cheers!
Ето го и моя бирен часовник, но нещо не работи.. Гледам други решения, сравнявам и не мога да открия защо... Дайте някой друг акъл?
Ако оставя в условието на If-a само - "userAvailable >= beerTimeStart" показва правилно, но сложа ли и допълнението за край на биреното време "&& (userAvailable <= beerTimeEnd)" се чупи...
Израза като е цял, каквото и да input-a все изкарва "its not beer time yet, try later"..
Като изкарвам, стойностите на "userAvailable", "beerTimeStart" и "beerTimeEnd". Ги изкарва коректно. Не знам, изпуши ми главата от толкова чудене.
Задачката не е трудна, но нещо зацепих.
А като парсваш часовете, обръщаш ли внимание на датата? В един и същи ден няма час, който да е едновременно след 13:00 и преди 3:00.
Да, да. Сутринта като го погледнах и като поразмишлявах малко, стана. :)
Бирен часовник /edited/
Здравейте, ето моето решение на задачата https://pastebin.com/2Ys4T5jp. Когато пусна debugger-a на ред 19, където е DateTime.ParseExact ми гърми. Дава Format Exception, но не разбирам защо. :(
Гърми ти защото мога да ти подам невалидни часове ти хубаво си кaзал hh:mm :tt но ако ти подам 14 pm при теб ще мине и какво правим.и datetime почва да се чуди. Казал си му че ще е от 1 до 12. И ти гърми с format exception не може да превърне стринго в валиден според това което си му задал час.А и тук е по-добре да ползваш tryparseexact така или иначе защото са ви казали че може да имаш и неправилен вход.