Loading...
SvilenPavlov avatar SvilenPavlov 11 Точки

Advanced Loop 11.Въвеждане на четно число (с обработка на грешен вход)

Здравейте, пичове. Имам два въпроса за тази задача.http://pastebin.com/CrqRLWEi -това ми е кода. 
Първо - как да овладея ексепшъни, за по-големи от инт числа? Ползвам catch (FormatException) ,което върши работа за стринг, ама май не върши за по-големи числа. И второ, при трето въвеждане на нецяло число или стринг ми дава грешка. (System.FormatException: Input string was not in a correct format) Чудно защо като първите два пъти си влиза в изключението и си казва, че е грешен инпута? Какво е различно третия път?

0
Programming Basics
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Трябва всичките проверки да са ти в while-цикъла. В твоя код проверяваш формата само при първия опит, тъй като try-catch за FormatException не ти е в цикъла.

По мое мнение, за тази задача изобщо нямаш нужда от такова структуриране - става само с TryParse и while-цикъл.

Ето примерно решение: http://pastebin.com/zupa7w9X

В него съм поставил TryParse (което проверява дали въведеното число е в точния формат и се събира в променливата, а после връща true/false и самото число (ако е успешно Parse-ването) ). Поставена е и проверка, дали числото е четно. Ако има нещо неясно, ще се радвам да го обясня.

Успех със задачата!

0
SvilenPavlov avatar SvilenPavlov 11 Точки

Всъщност, имам две проверки за изключения и само първата е извън цикъла. Втората е вътре. Това е неефективно знам, но така и не видях в кода ти разграничение между нечетно число и невалидно число. В условието на задачата влиза това разграничение и джъджа проверява за различните случаи. Съчетал си двете условия и даваш един и същи резултат, което не върши работа. Това, което ми помогна обаче е, че видях как си ползвал tryparse синтаксиса и имам един въпрос: int.TryParse(Console.ReadLine(), out a)  това out a накрая какво по-точно прави.

0
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Не е проблем да се разделят проверките за невалидно и нечетно число. Просто за конкретната задача се получава и този вариант. В Judge дава 100/100, иначе не бих качил решението.

Относно out в TryParse - то указва в коя променлива да се запише числото, в случай че Parse-ването е успешно.

0
YordanDringov avatar YordanDringov 26 Точки

Може ли да обясниш какво точно прави параметърът "out", който си ползвал в решението си? 

0
dimitur_botev avatar dimitur_botev 112 Точки

Моят съвет е вкарай цялата логика от началото до края на задачата в един try блок и накрая изреди catch блоковете. C# подържа множество catch блокове след един try.  Другият вариант разбира се е каквото колегата е дал, но  според мене упражни малко синтаксиса и свикни с управлението на грешки с try-catch конструкция, защото е важно 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.