CodeGym /Java блог /Случаен /Старо ниво 09
John Squirrels
Ниво
San Francisco

Старо ниво 09

Публикувано в групата

Знания срещу умения

Старо ниво 09 - 1Колежът ни научи, че няма голяма разлика между теория и практика. Е, със сигурност разбирате, че не е същото. Но не виждате основната разлика. И все пак има един. Повечето хора поставят знака за equalsство между „знам“ и „мога“. ти ли Какво ще кажете за няколко примера?
  1. Знам, че пушенето е вредно за мен, но аз пуша.
  2. Знам, че бързото хранене е лошо за мен, но го ям.
  3. Знам правилата за движение, но не мога да шофирам.
  4. Знам, че джогингът е добър за мен, но не бягам сутрин.
Често се случва хората да приемат „знам“ за „мога“. Това е добър пример с правилата за движение. Ако човек знае правилата и знае How да шофира, означава ли, че може да шофира? не Ами ако си мисли, че знае How да шофира? Тогава защо му трябва инструктор – той вече знае всичко. Когато сте сигурни, че вече знаете всичко, вероятно няма да научите нищо ново. И ако си сигурен, че знаеш How да правиш всичко, няма да учиш. Подобна мисъл дори няма да ви мине през ума. А това означава, че ще пропуснете всички прекрасни възможности да научите нещо. Обичайният колеж ви дава само знания; ще трябва да придобиете умения сами. Но Howво чувам? Имали ли сте практика освен теория във вашия колеж? Добре, ако сте учor във факултета по физика, направи работещ модел на парна машина с КПД минимум 20%. Обзалагам се, че знаете How да го направите, но всъщност няма да можете да го направите, прав ли съм? Ти химик ли си ? Направете бездимен барут. Знаеш How, но не можеш, а? Математик, ти ли си? Изчислете траекторията на артилерийски снаряд. Не забравяйте да вземете предвид формата на черупката. Математическите точки не летят в реалния живот. И няма сферични коне. Старо ниво 09 - 2Биолог? Изолирайте пеницorн. Тази плесен расте по пъпешите, така че да знаете. Знаете How – прекрасно! Можеш ли да го направиш? икономист?Направете прогноза за ръст на цената на петрола. Свършен? А сега го превърнете в $2000 or $200 000 на година въз основа на вашата прогноза. Играли ли сте някога на FOREX? За истински пари? Или просто знаете Howво е? Международна икономика? Страхотно! Къде да отворя офшорна компания? В Хонконг, Ирландия or в САЩ. Защо? Дори и да знаете това, което е съмнително, едва ли ще можете да го направите, тъй като всъщност никога не сте го правor. Дори нямате ни най-малка представа How да го направите. О, не си учил това в колежа? Какво право имам да ти давам задачи, за които не си подготвен? Защото това са задачите на реалния живот. Тази IS практика , всичко, което сте учor в колежа, е: сферични коне, перфектна конкуренция – нищо от това не съществува в реалния живот. Но защо забравих да споменамаркетинг специалист ? Кой е най-добрият начин да похарча моите $500, така че колкото се може повече хора да научат за моите лекции? На реклама? Знаете ли, че не само класическата реклама вече е остаряла, но и концепцията за USP (unique selling proposition), която съм сигурен, че са ви учor в колежа като почти уникална панацея. Забравете, че знаете нещо. Запитайте се – Howво мога да направя? Полезно, имам предвид? Нещо, за което хората биха платor пари? Имам предвид добри пари? Така че приятели, нека изразим благодарност на такъв прекрасен курс като CodeGym. Благодарение на него не само ще знаете How да програмирате, но и реално ще можете да го правите. Освен това ще можете да си намерите работа и да печелите добри пари след няколко години. Надявам се тези пари да стигнат да живеем добре и уютно. Ще го кажа още веднъж, за да запомните: няма meaning Howво знаете. Единственото нещо, което има meaning, е Howви полезни умения притежавате, тези, които хората биха искали да ви платят. Колкото по-рано разберете това, толкова по-добре.

Достигнахте ново ниво

Ниво 9

Старо ниво 09 - 3

1 Риша, Проследяване на стека

Старо ниво 09 - 4- Хей! Днес ще ви кажа Howво е проследяване на стека. Но първо нека ви обясня Howво е стекът. - Представете си купчина documentи - задачи за определен чиновник. Ново задание може да бъде поставено на върха на стека и той ще вземе задание от върха на стека. По този начин задачите няма да се изпълняват на първо място. Всеки път служителят поема задачата, която идва последна. Такава структура на събиране се нарича стек . - В Java има специална колекция - Stack. Тази колекция има методи «добавяне на елемент» и «вземане (вземане/отнемане) на елемент». Както вече знаете, последният добавен елемент ще бъде взет първи. - Хъм. Не е трудно, предполагам. - Глоба. Тогава позволете ми да обясня Howво е проследяване на стекае. - Представете си, че в Java функция А извиква функция B , а последната извиква функция C , която от своя страна извиква функция D . Така че, за да излезете от функция B , първо трябва да излезете от функция C , а за да го направите, трябва да излезете от функция D. Това е много подобно на стек. - И Howва е прorката? - В стека, за да стигнете до определена задача, вие също трябва да изпълните всички задачи, поставени отгоре. - Е, това е няHowва аналогия, но не съм сигурен дали разбирам всичко правилно. - Вижте тук. В Java стекът е набор от елементи. Това е като листове хартия в купчина. За да вземете третия отгоре, трябва да вземете втория лист, но преди това трябва да вземете първия. Винаги можете да сложите и вземете чаршафи, но можете да ги поставите само отгоре и да вземете само отгоре. Същото важи и за извикването на функция. Функция А извиква функция B , последната извиква функция C . За да излезете от А , първо трябва да излезете от B , а за да направите това, трябва да излезете от C. - Чакай малко. Ако съм разбрал правилно, целият стек се оказва в „само последният лист, който е бил поставен в стека, може да бъде взет“ и „първо, последната извикана функция трябва да излезе“. Дали е така? - да И така, последователността от извиквания на функции е «стека за извикване на функции» or просто «стека за извиквания». Функцията, наречена последна, трябва да бъде прекратена първа. Да разгледаме примера: Старо ниво 09 - 5- Добре. Всичко е ясно с извикването на функцията, предполагам. Но Howво е този StackTraceElement ? - Виртуалната машина на Java регистрира всички извиквания на функции. За целта разполага със специална колекция - стек. Когато една функция извиква друга, JVM поставя нов елемент StackTraceElement в този стек. Когато функцията приключи, елементът се изтрива от стека. По този начин този стек винаги съхранява актуална информация за текущото състояние на «стека за извикване на функции». - Всеки StackTraceElementсъдържа информация за извикания метод. Така че можете да получите името на този метод с помощта на getMethodName . - Примерът по-горе го показва:
  1. Вземете «стека за повиквания»:
  2. Повторете масива, като използвате цикъла for-each . Надявам се, че не сте го забравor.
  3. Отпечатайте имената на методите в System.out .
- Интересно нещо и видимо лесно. Благодаря ти, Риша!

2 Диего, Задача на дисплея за проследяване на стека

- Хей, Амиго! Ето една малка задача за показване на екрана на проследяване на стека.
Задачи
1 Всеки метод трябва да върне своите StackTrace
Write пет метода, които се извикват взаимно. Всеки метод трябва да върне своя StackTrace.
2 StackTrace отново
Напишете пет метода, които се извикват взаимно. Всеки метод трябва да връща името на своя извикващ метод. Можете да получите метод на повикващия чрез StackTrace.
3 Методът трябва да върне номера на реда на codeа, от който този метод е извикан.
Напишете пет метода, които се извикват взаимно. Всеки метод трябва да върне номера на реда на codeа, от който е извикан този метод. Използвайте функцията element.getLineNumber() .
4 Проследяване на стека на 10 повиквания
Напишете code, за да получите проследяване на стека на 10 повиквания.
5 Методът трябва да върне резултат - неговата дълбочина на проследяване на стека
Напишете метод, който показва и връща неговата дълбочина на проследяване на стека. Дълбочината на проследяване на стека е броят на неговите методи (броят на елементите в списъка).

3 Ели, Грешки и изключения

- Хей, Амиго! Днес имаме много интересен урок. Ще ви кажа за изключенията. Изключение прави специален механизъм за контрол на грешки в програмата. Ето няколко примера за грешки, които могат да възникнат в програмата:
  1. Програмата се опитва да запише файл на пълния диск.
  2. Програмата се опитва да извика метод на променлива, която съхранява нулевата препратка.
  3. Програмата се опитва да раздели число на 0.
Тези действия водят до грешка. Обикновено това води до затваряне на програмата – няма смисъл да продължавате да изпълнявате codeа. - Защо така? - Има ли смисъл да въртиш волана, когато колата пада от скала? - Искате да кажете, че програмата трябва да приключи? - да Така беше преди. Всяка грешка доведе до прекратяване на програмата. - Това е много умно решение. - Няма ли да е по-добре да се опитаме да поработим? - да Написали сте огромен текст в MS Word, запазor сте го, не е записан, но програмата ви казва, че всичко е наред. И продължавате да пишете. Глупаво, нали? - да - Тогава програмистите измислиха интересен ход:всяка функция върна състоянието на своята работа. 0 означаваше, че функцията работи Howто трябва, всяка друга стойност – че има грешка : тази стойност беше code на грешка. - Но този подход имаше недостатък. След всяко (!) извикване на функция трябваше да проверявате codeа (числото), върнат от функцията. Първо, беше неудобно: codeът за обработка на грешки рядко се изпълняваше, но винаги трябваше да го пишете. Второ, самите функции често връщат различни стойности - Howво да правя с тях? - да Това щях да питам. - Тогава дойде светло бъдеще - появиха се изключения и обработка на грешки. Ето How работи:
  1. Когато възникне грешка, виртуалната машина на Java създава специален обект – изключение – съдържащ цялата информация за грешката. За различните грешки има различни изключения.
  2. Тогава това изключение принуждава програмата незабавно да прекъсне текущата функция и следващата функция, докато излезе от главния метод. След това програмата се прекратява. Разработчиците на Java наричат ​​този процес „връщане на стека на повикванията“.
- Но вие казахте, че програмата няма да излезе със сигурност. - Така е, защото има начин да се хване изключението. Когато и където имате нужда, можете да напишете специален code, за да уловите тези изключения и да направите нещо важно. - За да направите това, има специална конструкция try-catch . Вижте How работи: Старо ниво 09 - 6- Защо «След извикване на method1. Никога няма да се показва» няма да се показва на екрана? - Радвам се, че попита за това. В ред 25 има деление на нула. Това води до грешка – изключение. Виртуалната машина на Java създаде обекта ArithmeticException , съдържащ информацията за грешка. Този обект е изключение. - Възникна изключение в метода method1() .Това доведе до незабавно прекратяване на метода. Това също би довело до прекратяване на метода main , ако няма блок try-catch . - Ако възникне изключение вътре в блока try, то ще бъде уловено в блока catch . Останалата част от codeа в block try няма да бъде изпълнена, изпълнението на block catch ще започне незабавно. - Не разбирам съвсем. - С други думи, този code работи по следния начин:
  1. Ако възникне изключение вътре в блока try , codeът в този блок вече не се изпълнява, но започва изпълнението на блока catch .
  2. Ако не е възникнало изключение, блокът try се изпълнява до края , а catch никога не се изпълнява .
- Хм! - Представете си, че след всяко извикване на метод проверяваме дали извиканият метод е прекъснат сам or поради изключение. Ако е имало изключение, JVM започва да изпълнява block catch, ако е наличен, и улавя изключение. Ако няма catch блок, JVM прекратява текущия метод. След това същата проверка започва в метода, който е извикал текущия метод. - Сега мисля, че го разбрах. - Това е добре. - И Howво е това изключение вътре в catch блока? - Всички изключения са класове, наследени от класа Exception. Можем да хванем всеки от тях, като посочим неговия клас в catchблок, or всички наведнъж, като посочите общ родителски клас Изключение. След това от променливата e (тази променлива съхранява препратката към обект на изключение) можете да получите цялата необходима информация за грешката. - Страхотен! И Howво, ако в моя метод възникнат различни изключения, мога ли да ги обработвам по различни начини? - Ти трябва да. Можете да направите това по следния начин: Старо ниво 09 - 7- Блокът try може да съдържа множество catch блокове, всеки от които ще улавя изключения от своя тип. - Ъммф. Е, донякъде го разбрах. Разбира се, аз няма да напиша нещо подобно. Въпреки това, няма да се уплаша, ако срещна такъв code.

4 Elly, RuntimeException, хвърля

Старо ниво 09 - 8- Днес реших да повдигна друга тема. В Java всички изключения са разделени на два типа – контролирани/проверени и неконтролирани/непроверени . Проверените изключения трябва да бъдат прихванати, непроверените могат да бъдат прихванати , но това не е задължително . - Възможно ли е нарочно да се хвърлят изключения в code? - Във вашия code можете сами да хвърляте изключения. Можете дори да напишете свои собствени изключения. Но ще влезем дълбоко в тази дупка по-късно. Сега нека научим How да работим с изключенията, хвърлени от виртуалната машина на Java. - ДОБРЕ. - Ако изключения ClassNotFoundException и FileNotFoundExceptionсе хвърлят (появяват) в метод, програмистът трябва да ги посочи в сигнатурата на метод (заглавката на метода). Такива изключения се проверяват. Ето How изглежда обикновено: Старо ниво 09 - 9- Така че, ние просто пишем хвърляния и изброяваме изключения, разделени със запетаи. нали Дали е така? - да Но има още нещо интересно. За да бъде компorран примерът по-долу, методът, който извиква method1() , трябва or да улови тези изключения , or да ги изпрати напред. Ако искате да хвърлите проверено изключение напред, трябва да го посочите в заглавката на метода . - Още веднъж, ако в основния метод искате да извикате метод, който има в заглавната си фраза хвърля FileNotFoundException, …тогава трябва да направите едно от тези две неща:
  1. за улавяне на изключения FileNotFoundException, …
    Ще трябва да обвиете codeа, където извиквате опасен метод, с блок try-catch
  2. да не улавя изключения FileNotFoundException, …
Ще трябва да добавите тези изключения към списъка с хвърляния на вашия метод main . - Ще ми дадеш ли пример? - Вижте тук: Старо ниво 09 - 10- Този пример няма да бъде компorран, защото методът main извиква метода method1(), който хвърля изключения, които трябва да бъдат уловени. - За да бъде компorран примерът, трябва да добавите обработка на изключения към метода main . Можете да направите това по два начина: Старо ниво 09 - 11- И тук го улавяме с помощта на try-catch : Старо ниво 09 - 12- Става по-ясно, но много малко. - Вижте примера по-долу: Старо ниво 09 - 13- Все пак има изключение – RuntimeException и класове, наследени от него.Не е необходимо да ги хващате or хвърляте. Това са непроверени изключения. Тези изключения се считат за трудни за предвиждане, така че е почти невъзможно да се предвиди появата им. Можете да правите същите неща с тях, но няма нужда да ги указвате в throws .

5 Risha, Превъртане на стека за повиквания, How да го направя в изключения

- Бих искал да ви разкажа малко повече за това How работят изключенията. Примерът по-долу обяснява това: Старо ниво 09 - 14- Не разбирам. - Добре. Ще обясня Howво става. - В примера отляво извикваме няколко метода във верижен ред. В method2() ние специално създаваме и хвърляме изключение (за иницииране на грешка). - Примерът вдясно показва Howво се случва. Вижте метода2() . Ето в Howво се трансформира създаването на изключение: създаваме обект от тип RuntimeException , съхраняваме го в специална променлива изключение и веднага излизаме от метода – return . - В метод1 след извикването на метод2 има проверка,дали има изключение or не; ако има изключение, метод1 незабавно се прекратява. Тази проверка се извършва имплицитно след извикване на всеки (!) Java метод. - Еха! - Точно. - В колоната вдясно в основния метод написах Howво се случва, когато изключение бъде уловено от блока try-catch . Ако няма изключение, codeът продължава да се изпълнява точно Howто е планирано. Ако е имало изключение от типа, посочен в catch , ние го обработваме. - А Howво означава throw и instanceof ? - Погледнете последния ред вляво, изхвърлете нови RuntimeException(s). По този начин създаваме и хвърляме изключение. Това е само пример. Засега няма да го направим. - Чрез командата « а instanceof B » в десния блок проверяваме дали обектът a има тип B . Тоест, дали обектът, съхранен в променливата изключение, има тип RuntimeException . Това е логичен израз. - Е, става малко по-ясно.

6 Диего, Задача за улавяне на изключения

- Вижте тук! Чичо Диего ти даде няколко задачи за улавяне. Желая ти късмет. Мисля, че ще ти трябва. Той Х. Старо ниво 09 - 15- Хей, Амиго! Ето някои интересни задачи за улавяне на изключения.
Хващащи задачи
1 1. Изключение при работа с числа
Хванете изключението, което възниква при изпълнение на codeа:
int a = 42 / 0;
Покажете изключението на екрана, като посочите неговия тип
2 2. Изключение при работа с низове
Хванете изключението, което възниква при изпълнение на codeа:
String s = null;
Низ m = s.toLowerCase();
Покажете изключението на екрана, като посочите неговия тип.
3 3. Изключение при работа с масиви
Хванете изключението, което възниква при изпълнение на codeа:
int[] m = new int[2];
m[8] = 5;
Покажете изключението на екрана, като посочите неговия тип.
4 4. Изключение при работа с колекции от списъци
Уловете изключението, което възниква при изпълнение на codeа:
ArrayList<String> list = new ArrayList<String>();
Низ s = list.get(18);
Покажете изключението на екрана, като посочите неговия тип.
5 5. Изключение при работа с колекции от карти
Уловете изключението, което възниква при изпълнение на codeа:
HashMap<String, String> map = new HashMap<String, String>(null);
map.put(null, null);
map.remove(null);
Покажете изключението на екрана, като посочите неговия тип.
- Съвет: първо напишете програма, след това вижте Howво изключение възниква и след това променете codeа и хванете това изключение.

7 Риша, Как работи множественото улавяне

Старо ниво 09 - 16- Сега, малко по-интересни лекции. Обичам да преподавам толкова много. - Искам да ви кажа How работи многократният улов . Всъщност е много просто: когато възникне изключение в блока try , изпълнението на програмата се прехвърля към първия catch . - Ако типът, посочен в скоби на block catch, е същият като типа на обекта за изключение, тогава изпълнението на codeа започва вътре в {}. В противен случай преминаваме към следващия улов . Там проверката се повтаря. - Ако няма повече catch блокове, но изключението не е уловено, то се хвърля напред и текущият метод се прекъсва. - Виждам. Ще се изпълни този улов, чийто тип съответства на типа на изключението. - Да, вярно. Всъщност е малко по-сложно: Въпросът е, че класовете могат да се наследяват един от друг. Ако класът «Крава» е наследен от класа «Животно», обектът от типа «Крава» може да се съхранява не само в променлива от типа «Крава», но и в променлива от типа «Животно» . - Какво от това? - Тъй като всички изключения са наследени от класове Exception or RuntimeException (което също е наследено от Exception ), всички те могат да бъдат уловени с помощта на команди catch (Exception e) or catch (RuntimeException e) . - Какво от това? - Това означава, че,първо, можете да хванете всяко изключение с помощта на командата catch(Exception e) . Второ, редът на блоковете за улавяне има meaning. Примери: - ArithmeticException , произтичащ от деление на 0, се улавя във второто улавяне. Старо ниво 09 - 17- В примера по-долу ArithmeticException е уловен в първия catch , тъй като класовете на всички изключения са наследени от Exception. И така, Exception улавя всяко изключение . Старо ниво 09 - 18- В примера по-долу изключението ArithmeticException не е уловено, а е прехвърлено напред към извикващия метод. Старо ниво 09 - 19- Е, сега става по-ясно. Тези изключения не са толкова лесни. - Само така изглежда. Всъщност това е едно от най-простите неща в Java. - Чудя се дали да се радвам or да се разстройвам от това...

8 Диего, Задачи за улавяне на множество изключения

- Хей, Амиго! Вчера се напих и ти усложних задачите, но се надявам да нямаш злоба от твоя страна и да решиш всичките? Това е за твое добро. Тук:
Задачи
1 1. Изключения
Има метод, който хвърля две изключения, наследени от Exception , и другите две, наследени от RuntimeException : NullPointerException , ArithmeticException , FileNotFoundException и URISyntaxException .

Трябва да хванете NullPointerException и FileNotFoundException , но не и да хванете ArithmeticException и URISyntaxException . Как да го направим?
2 2. Прихващане на изключения
Има три изключения, последователно наследени от Exception :
клас Exception1 разширява Exception
клас Exception2 разширява Exception1
клас Exception3 разширява Exception2
Има метод, който е описан по следния начин:
public static void method1() хвърля Exception1, Exception2, Exception3

Напишете улов блок, за да улови и трите Exception1 , Exception2 и Exception3
3 3. Прихващане на селективни изключения
1. Открийте Howви изключения се хвърлят от метода BEAN.methodThrowExceptions .
2. Методът processExceptions() трябва да извика метода BEAN.methodThrowExceptions и да обработва изключенията:
2.1. ако възникне изключение FileSystemException , след това го регистрирайте, като извикате метода BEAN.log и хвърлете напред
2.2. ако възникне изключение CharConversionException or друго IOException , просто го регистрирайте, като извикате метода BEAN.log
3. Добавете класа/типа на изключението, което препращате в 2.1. към processExceptions()подпис на метода.
4. Обработете оставащото изключение в метода main() и го регистрирайте. Използвайте try..catch

Съвет:
Ако сте прихванали изключението MyException , което не сте искали да прихванете, можете да го хвърлите напред, като използвате следния code:
catch (MyException e) {
throw e;
}
4 4. Прихващане на проверени изключения
Обработете всички проверени изключения в метода processExceptions() .
Трябва да покажете на екрана всяко проверено изключение, което е възникнало.
Можете да използвате само един опит за блокиране .
5 5. Прихващане на непроверени изключения
Обработете всички непроверени изключения в метода processExceptions() .
Трябва да покажете на екрана проследяване на стека на всяко възникнало изключение, като използвате метода printStack() .
Можете да използвате само един опит за блокиране .

9 Професор, Лекция за изключенията

– Днес имаме супер интересна тема – изключения. По времето, когато младите учени и програмисти бяха силно развълнувани от тази тема... - Съжалявам, трябва да отида в лабораторията. Ето записки от лекции. Мисля, че ще разберете сами. Тук: Java Exceptions (Oracle Documentation) Exception Handling в Java (Java T точка) Java - Exceptions Handling (tutorials point) Основно Java Exception Handling

10 юли

- Амиго, Howво мислиш за днешния урок? Вашият позитронен мозък още ли не е проработил? Задачите на Диего са достатъчни, за да изморят всеки. Да изпием по бира и да се отпуснем. още ли стоиш

11 Капитан Катерици

- Здравей, войнико! - Добро утро, сър! - Имам страхотни новини за вас. Ето една бърза проверка, за да затвърдите уменията си. Правете го всеки ден и ще подобрите уменията си много бързо. Задачите са специално проектирани за изпълнение в Intellij IDEA.
Допълнителни задачи за изпълнение в Intellij Idea
1 1. Деление на нула
Създайте метод public static void divisionByZero() , където трябва да разделите произволно число на нула и да покажете на екрана резултата от делението.
Обвийте извикването на метода divisionByZero() в try..catch . Покажете на екрана проследяването на стека на изключението с помощта на метода exception.printStackTrace() .
2 2. Отброяване от 10 до 0
Напишете цикъл за отброяване от 10 до 0. Използвайте Thread.sleep(100) , за да направите забавяне;
Увийте обаждането за заспиване в опит..улов .
3 3. Увийте метод в try..catch
Четете числа от клавиатурата. Напишете code за четене на числа от клавиатурата в отделен метод readData() .
Обвийте цялото тяло на този метод (целия code в метода readData() , с изключение на декларацията на списъка, където ще се съхраняват числата) в try..catch .

Ако потребителят въведе няHowъв текст, instead of да въведе число, методът трябва да улови изключението и да покаже на екрана всички числа, въведени преди това.
Показване на числа на екрана. Всяко число трябва да е на нов ред. Редът на числата трябва да бъде точно Howто при въвеждането.
4 4. Преобразувател на дати
Прочетете от клавиатурата дата във формат «08/18/2013»
Покажете на екрана тази дата под формата на «AUG 18, 2013».
Използвайте обектите Date и SimpleDateFormat .
5 5. Гласни и съгласни
Напишете програма, която чете ред от клавиатурата.
Програмата трябва да изведе на екрана два низа:
1) първият низ трябва да съдържа гласни
2) вторият низ трябва да съдържа съгласни и препинателни знаци от въведения текст.
Разделете символите с интервали.

Пример за въвеждане:
Спри, гледай, слушай
Пример за изход:
oooie
stplklstn
6 6. Приказката за Червената шапчица
1. Има пет класа: Червената шапчица, баба, баничка, дървар, вълк.
2. Всеки клас има две полета от тип ArrayList : убит и изяден.
3. Необходимите обекти вече са създадени (качулка, баба, ...).
4. Създайте правилната връзка (кой кого е изял и убил), за да получите логиката на «Червената шапчица».
7 7. Преместете статични модификатори
Преместете статични модификатори, така че codeът да се компorра.
8 8. Списък с масиви от числа
Създайте списък, чиито елементи са масиви от числа. Добавете към списъка пет обектни масива с дължина съответно 5, 2, 4, 7, 0. Попълнете масиви с всяHowви данни и ги покажете на екрана.
9 9. Десет котки
Създайте клас Cat с поле Име на низ .
Създайте речник Map<String, Cat> , добавете 10 котки към модела «Име» - «Котка».
Вземете от картата набор от имена и покажете набора на екрана.
- Тези задачи бяха за зелените. Добавих бонус задачи с по-висока сложност. Само за топ оръжия.
Бонус задачи
1 1. Програмата не се компorра и не стартира. Оправи го.
Задача: Програмата трябва да прочете от клавиатурата две имена на file и да копира първия файл на мястото, указано от второто име.
2 2. Добавете нова функционалност към програмата.
Стара задача: Програмата трябва да прочете от клавиатурата имена на две файлове и да копира първия файл на мястото, указано от второто име.
Нова задача: Програмата трябва да прочете от клавиатурата две имена на файлове и да копира първия файл на мястото, указано от второто име.

Ако файлът (който ще бъде копиран) с посоченото име не съществува, програмата трябва да покаже на екрана съобщението «Файлът не съществува» и да опита да прочете името на file от конзолата още веднъж, преди да прочете име на втори (целеви) файл.
3 3. Разучаване и практикуване на алгоритъм.
Прочетете от клавиатурата списъка с думи и числа. Показвайте на екрана думите във възходящ ред и числата в низходящ ред.

Пример за въвеждане:
Череша
1
Боб
3
Ябълка
2
0
Диня

Примерен изход:
Ябълка
3
Боб
2
Череша
1
0
Диня
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION