Задача 4. Easter Shop, Programming Basics Online Exam - 20 and 21 April 2019
Здравейте,
Моля за обяснение каква е грешката в решението ми на задача Easter Shop . Принципно нулевите тестовете минават, но в judge минават само половината тестове. Грешката, която изписва е Runtime error - Exception in thread "main" java.util.NoSuchElementException: No line found.
Още един въпрос към задачата - има зададени два изхода - когато яйцата недостигат и когато е подадена команда "Close" . Обаче има и трети вариант,в който яцата са достатъчни и няма команда "Close"- тогава какъв е изходът ?
Здравей,
Мисля,че те разбрах. Всъщност добавих return в моя код и в judge мина на 100%. Досега не съм използвала return и не ми беше много ясно мястото му. Много благодаря за отговора.
Би ли могла да ми кажеш и за този вариант, в който имам достатъчно яйца и не се прекратява цикъла. Примерно в следния случай:
23
Buy
8
Fill
3
Buy
10
Благодаря отново !
Ами доколкото виждам, ти нямаш такъв кейс, защото си казал, че програмата ще трябва да спре (а преди това да изпринти нещо) само при два случая:
Единият - когато имаш Close - Представи си, че просто "затваряш магазина" и трябва да си опишеш наличностите в някакъв дневник (какво сме имали, какво сме продали, какво е останало и ред други хрумки).
Вторият - когато така да се каже "работното време" не е приключило (съответно нямаме Close), обаче нямаме какво да продаваме или поне тая стока дето ни я иска клиентът. Тогава просто казваме "няма (толкова)" и "елате утре (например)".
Ако по твоя пример имаме достатъчно яйца и в същото време "работното време" не е свършило - то ти седиш и чакаш да дойде клиент (тоест да получиш команда) и програмата ти виси в изчаквателен режим, докато не получи вход за "купи/достави яйца" и ако "дойде клиент" след цялото това чакане ще се възобновят проверките и операциите, които си му казал да прави като има инпут.
Ако все пак искаш да имаш някакви други условия, винаги можеш да измислиш ифове при които, ако са true ще брейкне и ще върне някакъв резултат. Но в твоята задача изрично е казано, че имаш два кейса, при които спира програмата. :)
Що се отнася до RETURN:
Ако трябва да съм честна, не му е точно тук семантичното приложение, но за знанията от бейсикс върши работа и е достатъчно да знаеш, че така можеш да прекратиш цялата програма. Реално ти казваш "Каквото си правил до тук - правил! От тук нататък ми върни като резултат НИЩО." Ще учите по-напред семантично какво е това да ритърнва нещо или нищо, но не се обърквай за сега с тези подробности.
Това, което ще ти е по-полезно е да направиш разликата между BREAK и RETURN, когато ги използваш в цикъл. С BREAK прекратяваш този блок, в който го викаш. С други думи блока между къдравите скоби {...}. С RETURN направо излизаш от програмата (казано най-опростено).
Опитах се максимално подробно да го обясня, дано да ти е станало ясно. Успех :)
Здравей отново,
Подробното обяснения беше много полезно! Благодаря много !
Понеже не ми беше ясно защо не ми се получават половината тестове, реших да опитам с различни входове и този,който дадох като пример,видях,че не дава никакъв резулат. Та затова си помислих,че не покривам може би тези случаи. Разбирам,че трябва да се покрият единствено дадените условия.
А беше ли възможно по вида на грешката "Runtime error - Exception in thread "main" java.util.NoSuchElementException: No line found." да се ориентирам къде бъркам.
Надявам се да не отнемам твърде много време от празничния ден!