Kunskap vs. färdigheter

Gammal nivå 09 - 1College lärde oss att det inte är någon stor skillnad mellan teori och praktik. Tja, du förstår säkert att det inte är samma sak. Men du ser inte kärnskillnaden. Ändå finns det en. De flesta sätter jämställdhetstecknet mellan "jag vet" och "jag kan". Gör du? Vad sägs om några exempel?
  1. Jag vet att rökning är dåligt för mig, men jag röker.
  2. Jag vet att snabbmat är dåligt för mig, men jag äter det.
  3. Jag kan trafikregler men jag kan inte köra.
  4. Jag vet att jogging är bra för mig men jag joggar inte på morgonen.
Det händer ofta att folk tar "jag vet" för "jag kan". Det är ett bra exempel med trafikregler. Om en person kan reglerna och vet hur man kör, betyder det att han kan köra? Nej. Tänk om han tror att han vet hur man kör? Så varför skulle han behöva en instruktör – han vet redan allt. När du är säker på att du redan vet allt kommer du förmodligen inte att lära dig något nytt. Och om du är säker på att du vet hur man gör allt, kommer du inte att studera. En tanke som denna kommer inte ens att slå dig. Och det betyder att du kommer att missa alla underbara möjligheter att lära dig något. Vanligt college ger dig bara kunskap; du måste skaffa dig färdigheter på egen hand. Men vad hör jag? Har du haft praktik förutom teori på din högskola? Okej, om du studerade på fysikfakulteten, gör en arbetsmodell av en ångmaskin med en verkningsgrad på minst 20%. Jag slår vad om att du vet hur man gör det, men du kommer faktiskt inte att kunna göra det, eller hur? Är du kemist ? Gör rökfritt pulver. Du vet hur, men du kan inte, ha? Matematiker, är du? Beräkna banan för ett artillerigranat. Glöm inte att ta hänsyn till skalets form. Matematiska prickar flyger inte i verkligheten. Och det finns inga sfäriska hästar. Old Level 09 - 2Biolog? Isolera penicillin. Denna mögel växer på meloner, så du vet. Du vet hur - underbart! Kan du göra det? Ekonom?Gör en prognos för pristillväxt på olja. Gjort? Och förvandla det nu till $2 000 eller $200 000 per år baserat på din prognos. Har du någonsin spelat på FOREX? För riktiga pengar? Eller vet du bara vad det är? Internationell ekonomi? utmärkt! Var öppnar jag ett offshorebolag? I Hong-Cong, Irland eller i USA. Varför? Även om du vet det, vilket är tveksamt, kommer du knappast att kunna göra det, eftersom du aldrig faktiskt har gjort det. Du har inte ens en aning om hur man gör. Åh, du studerade inte det på college? Vilken rätt har jag att ge dig uppgifter du är oförberedd på? För det här är det verkliga livets uppgifter. Det här ÄR praktiken , allt du har studerat på högskolan är: sfäriska hästar, perfekt tävling – inget av det existerar i verkligheten. Men varför har jag glömt att nämnamarknadsföringsspecialist ? Vilket är det bästa sättet att spendera mina 500 dollar så att så många som möjligt vet om mina föreläsningar? På reklam? Är du medveten om att inte bara klassisk reklam redan är föråldrad, utan också konceptet USP (unique selling proposition), som jag är säker på att du lärde dig på college som ett nästan unikt universalmedel. Glöm att du vet något. Fråga dig själv – vad kan jag göra? Användbart, menar jag? Något folk skulle betala pengar för? Bra pengar, menar jag? Så vänner, låt oss uttrycka tacksamhet för en så underbar kurs som CodeGym. På grund av det kommer du inte bara att veta hur man programmerar, utan du kommer faktiskt att kunna göra det. Du kommer också att kunna få ett jobb och tjäna bra pengar om några år. Jag hoppas att dessa pengar ska räcka till för att leva trevligt och mysigt. Jag säger det en gång till, så du kommer ihåg: det spelar ingen roll vad du vet. Det enda som spelar roll är vilka användbara färdigheter du har, de som folk skulle vara angelägna om att betala dig. Ju tidigare du förstår detta, desto bättre.

Du har nått en ny nivå

Nivå 9

Gammal nivå 09 - 3

1 Risha, Stack trace

Gammal nivå 09 - 4- Hallå! Idag ska jag berätta vad stackspåret är. Men låt mig först förklara dig vad stacken är. – Tänk dig en bunt papper – uppdrag till en viss tjänsteman. En ny uppgift kan läggas överst i högen, och han kommer att ta en uppgift från toppen av en hög. Således kommer uppdrag inte att utföras efter först till kvarn. Varje gång tar expediten det uppdrag som kommer sist. En sådan insamlingsstruktur kallas en stack . - I Java finns det en speciell samling - Stack. Den här samlingen har metoderna «lägg till ett element» och «ta (få/ta bort) ett element». Som du redan vet kommer det sista elementet som läggs till att tas först. - Brum. Det är inte svårt, antar jag. - Bra. Låt mig sedan förklara vad en stack traceär. - Föreställ dig att i Java anropar funktionen А funktion B och den senare anropar funktionen C , som i sin tur anropar funktionen D . Så för att avsluta funktion B måste du först avsluta funktion C och för att göra det måste du avsluta funktion D . Detta är mycket likt en stack. – Och vad är likheten? – I stacken, för att komma till ett visst uppdrag, måste du också slutföra alla uppdrag som lagts överst. - Tja, det är en liknelse, men jag är inte säker på om jag förstår allt rätt. - Titta här. I Java är en stack en uppsättning element. Det är som pappersark i en hög. För att ta det tredje från toppen måste du ta det andra arket, men innan dess måste du ta det första. Du kan alltid lägga och ta lakan, men du kan bara lägga dem på toppen och ta bara från toppen. Detsamma gäller funktionsanropet. Funktion А anropar funktion B , den senare anropar funktion C. För att avsluta А måste du först avsluta B och för att göra detta måste du avsluta C. - Vänta en minut. Om jag fattade det rätt, blir hela stapeln i «bara det sista arket som lades på stapeln kan tas» och «först ska den senast anropade funktionen avslutas». Är det så? - Ja. Så, sekvensen av funktionsanrop är «funktionsanropsstacken», eller helt enkelt «anropsstacken». Funktionen som kallas sist måste avslutas först. Låt oss titta på exemplet: Gammal nivå 09 - 5- OK. Allt är klart med funktionsanropet, antar jag. Men vad är detta StackTraceElement ? - Java virtuell maskin loggar alla funktionsanrop. För detta ändamål har den en speciell samling - stack. När en funktion anropar en annan, placerar JVM ett nytt element StackTraceElement i denna stack. När funktionen avslutas raderas elementet från stacken. Således lagrar denna stack alltid aktuell information om det aktuella tillståndet för «funktionsanropsstacken». - Varje StackTraceElementinnehåller information om anropad metod. Så du kan få namnet på denna metod med hjälp av getMethodName . - Exemplet ovan visar det:
  1. Hämta «samtalsstacken»:
  2. Iterera arrayen med loopen för varje . Jag hoppas att du inte har glömt det.
  3. Skriv ut metodnamn till System.out .
– En intressant sak, och tydligen lätt. Tack, Risha!

2 Diego, Task on stack trace display

- Hej, Amigo! Här är en liten uppgift för att visa en stackspårning på skärmen.
Uppgifter
1 Varje metod ska returnera sin StackTrace
Write fem metoder som anropar varandra. Varje metod bör returnera sin StackTrace.
2 StackTrace igen
Skriv fem metoder som anropar varandra. Varje metod bör returnera namnet på sin anropsmetod. Du kan få anropsmetoden med StackTrace.
3 Metoden ska returnera radnumret för koden som denna metod anropades från
Skriv fem metoder som anropar varandra. Varje metod ska returnera radnumret för koden som denna metod anropades från. Använd funktionen element.getLineNumber() .
4 Stackspårning av 10 samtal
Skriv kod för att få en stackspårning av 10 samtal.
5 Metoden ska returnera ett resultat - dess stackspårdjup
Skriv en metod som visar och returnerar dess stackspårdjup. Stackspårdjup är antalet av dess metoder (antalet element i listan).

3 Elly, fel och undantag

- Hej, Amigo! Idag har vi en mycket intressant lektion. Jag ska berätta om undantag. Undantag är en speciell mekanism för att kontrollera fel i programmet. Här är några exempel på fel som kan uppstå i programmet:
  1. Programmet försöker skriva en fil till hela disken.
  2. Programmet försöker anropa en metod för en variabel som lagrar nollreferensen.
  3. Programmet försöker dividera ett tal med 0.
Dessa åtgärder resulterar i ett fel. Vanligtvis leder detta till att ett program stängs – det är ingen idé att fortsätta exekvera koden. - Varför är det så? - Är det någon mening med att vrida på ratten när bilen faller av en klippa? – Menar du att programmet ska avslutas? - Ja. Så var det förr. Alla fel ledde till att ett program avslutades. – Det är ett väldigt smart beslut. – Vore det inte bättre att försöka jobba på? - Ja. Du har skrivit en stor text i MS Word, sparat den, den har inte sparats, men programmet säger att allt är OK. Och du fortsätter att skriva. Dumt, inte sant? - Ja. - Sedan kom programmerare på ett intressant drag:varje funktion returnerade status för sitt arbete. 0 betydde att funktionen fungerade som den skulle, vilket annat värde som helst – att det fanns ett fel: detta värde var en felkod. – Men det här upplägget hade en nackdel. Efter varje (!) funktionsanrop var du tvungen att kontrollera koden (numret) som returnerades av funktionen. För det första var det obekvämt: felhanteringskoden kördes sällan, men du var alltid tvungen att skriva den. För det andra returnerar själva funktionerna ofta olika värden - vad ska man göra med dem? - Ja. Det var det jag tänkte fråga. – Sedan kom en ljus framtid – undantag och felhantering hade dykt upp. Så här fungerar det:
  1. När ett fel uppstår skapar Java Virtual Machine ett speciellt objekt – ett undantag – som innehåller all information om felet. För olika fel finns det olika undantag.
  2. Sedan tvingar detta undantag programmet att omedelbart avbryta den aktuella funktionen och nästa funktion tills den avslutar huvudmetoden. Därefter avslutas programmet. Java-utvecklare kallar denna process "rullar tillbaka samtalsstacken".
– Men du har sagt att programmet inte kommer att sluta med säkerhet. – Det stämmer, för det finns ett sätt att fånga undantaget. När och var du än behöver kan du skriva en speciell kod för att fånga upp dessa undantag och göra något viktigt. - För att göra detta finns det en speciell konstruktionsprovning . Se hur det fungerar: Gammal nivå 09 - 6- Varför «Efter metod1-anrop. Kommer aldrig att visas» kommer inte att visas på skärmen? - Jag är glad att du frågade om det. På rad 25 finns en division med noll. Detta leder till ett fel – ett undantag. Java virtuell maskin skapade objektet ArithmeticException som innehåller felinformationen. Detta objekt är ett undantag. - Ett undantag inträffade i metoden method1() .Detta resulterade i att metoden omedelbart avslutades. Det skulle också leda till att metoden main avslutas om det inte fanns något försöksfångstblock . - Om ett undantag inträffar inne i försöksblocket, kommer det att fångas i fångstblocket . Resten av koden i blockförsöket kommer inte att exekveras, exekveringen av blockfångsten kommer att starta omedelbart. – Jag förstår inte riktigt. - Med andra ord, den här koden fungerar så här:
  1. Om ett undantag inträffar inuti försöksblocket exekveras inte koden i detta block längre, utan exekveringen av blockfångsten startar .
  2. Om inget undantag inträffade, exekveras försöksblocket till slutet, och catch exekveras aldrig .
- Ahem! - Föreställ dig att vi efter varje metodanrop kontrollerar om den anropade metoden avslutats av sig själv eller på grund av undantag. Om det fanns ett undantag, börjar JVM att exekvera blockfångsten om den är tillgänglig, och fångar ett undantag. Om det inte finns något fångstblock, avslutar JVM den aktuella metoden. Sedan börjar samma kontroll i metoden som anropade aktuell metod. – Nu tror jag att jag fick det. - Det är okej. - Och vad är det där undantaget i fångstblocket? - Alla undantag är klasser som ärvts från klassen Undantag. Vi kan fånga vilken som helst av dem genom att ange dess klass i fångstenblock, eller alla på en gång genom att ange en gemensam överordnad klass Undantag. Sedan, från variabeln e (denna variabel lagrar referensen för ett undantagsobjekt) kan du få all nödvändig information om felet. - Bra! Och vad händer om i min metod förekommer olika undantag, kan jag hantera dem på olika sätt? - Du måste. Du kan göra det så här: Gammal nivå 09 - 7- Försöksblocket kan innehålla flera fångstblock , som vart och ett kommer att fånga undantag av sin typ. - Umph. Tja, jag fattade det. Självklart kommer jag inte skriva något sånt här själv. Jag kommer dock inte att bli rädd om jag möter en sådan kod.

4 Elly, RuntimeException, kastar

Gammal nivå 09 - 8– Jag bestämde mig för att ta upp ett annat ämne idag. I Java är alla undantag uppdelade i två typer – kontrollerade/kontrollerade och okontrollerade/okontrollerade . Markerade undantag måste fångas, omarkerade kan fångas men det krävs inte . - Är det möjligt att kasta undantag i en kod med flit? – I din kod kan du själv slänga undantag. Du kan till och med skriva dina egna undantag. Men vi kommer djupt ner i det här hålet senare. Låt oss nu lära oss hur man arbetar med undantagen från Java Virtual Machine. - Okej. - Om undantag ClassNotFoundException och FileNotFoundExceptionkastas (visas) i en metod, måste programmeraren specificera dem i signaturen för en metod (metodhuvud). Sådana undantag kontrolleras. Så brukar det se ut: Gammal nivå 09 - 9– Så, vi skriver bara kast och listar undantag separerade med kommatecken. Höger? Är det så? - Ja. Men det finns en annan intressant sak. För att exemplet nedan har kompilerats måste metoden som anropar method1() antingen fånga dessa undantag eller kasta dem framåt. Om du vill skicka ett markerat undantag framåt måste du ange det i metodhuvudet . - Återigen, om du i huvudmetoden vill anropa en metod som har i sin huvudfras kastar FileNotFoundException, ...då måste du göra en av dessa två saker:
  1. för att fånga undantag FileNotFoundException, …
    Du måste slå in koden där du anropar en farlig metod med ett försök-fångst- block
  2. att inte fånga undantag FileNotFoundException, ...
Du måste lägga till dessa undantag i kastlistan för din metodhuvud . - Kan du ge mig ett exempel? - Titta här: Gammal nivå 09 - 10- Det här exemplet kommer inte att kompileras, eftersom metoden main anropar metoden method1(), som kastar undantag som måste fångas upp. - För att exemplet ska kompileras måste du lägga till undantagshantering i metoden main . Du kan göra detta på två sätt: Old Level 09 - 11- Och här fångar vi det med try-catch : Old Level 09 - 12- Det blir tydligare, men väldigt lite. - Titta på exemplet nedan: Old Level 09 - 13- Det finns fortfarande ett undantag - RuntimeException och klasser som ärvts från det.Det är inte nödvändigt att fånga eller kasta dem. Dessa är okontrollerade undantag. Dessa undantag anses vara svåra att förutsäga, så det är nästan omöjligt att förutsäga deras förekomst. Du kan göra samma saker med dem, men det finns ingen anledning att ange dem i kast .

5 Risha, Rolling the call stack, hur man gör det i undantagsfall

– Jag skulle vilja berätta lite mer om hur undantag fungerar. Exemplet nedan förklarar att: Old Level 09 - 14- Jag fattar inte. - Okej. Jag ska förklara vad som händer. – I exemplet till vänster kallar vi flera metoder i kedjeordning. I metod2() skapar vi specifikt och kastar ett undantag (för att initiera ett fel). – Exemplet till höger visar vad som händer. Titta på metod2() . Det är vad skapandet av ett undantag förvandlas till: vi skapar ett objekt av typen RuntimeException , lagrar det i ett speciellt variabelundantag och avslutar omedelbart metoden – return . - I metod1 , efter anropet av metod2 finns en kontroll,om det finns ett undantag eller inte; om det finns ett undantag, avslutas metod1 omedelbart. Denna kontroll görs implicit efter anrop av varje (!) Java-metod. - Wow! - Exakt. - I kolumnen till höger i metodhuvudet skrev jag vad som händer när ett undantag fångas upp av try-catch- blocket. Om det inte fanns något undantag, fortsätter koden att köras precis som planerat. Om det fanns ett undantag av den typ som anges i catch , så hanterar vi det. - Och vad betyder kast och instans av ? - Titta på den sista raden till vänster kasta nya RuntimeException(s). På så sätt skapar vi ett undantag. Detta är bara ett exempel. Vi kommer inte att göra det än så länge. - Med hjälp av kommandot « а instans av B » i det högra blocket kontrollerar vi om objektet a har typen B . Det vill säga om objektet som är lagrat i variabelundantaget har typen RuntimeException . Det är ett logiskt uttryck. – Tja, det blir lite tydligare.

6 Diego, Exception catch task

- Titta här! Farbror Diego kom med få uppgifter om att fånga åt dig. Önskar dig lycka till. Jag tror att du kommer att behöva det. Heh. Old Level 09 - 15- Hej, Amigo! Här är några intressanta undantagsfångstuppgifter.
Fånga uppgifter
1 1. Undantag vid arbete med siffror
Fånga undantaget som inträffar när koden körs:
int a = 42 / 0;
Visa undantaget på skärmen och ange dess typ
2 2. Undantag vid drift med strängar
Fånga undantaget som uppstår när koden körs:
String s = null;
String m = s.toLowerCase();
Visa undantaget på skärmen och ange dess typ.
3 3. Undantag vid drift med arrayer
Fånga undantaget som uppstår när koden körs:
int[] m = new int[2];
m[8] = 5;
Visa undantaget på skärmen och ange dess typ.
4 4. Undantag när du arbetar med listsamlingar
Fånga undantaget som uppstår när koden körs:
ArrayList<String> list = new ArrayList<String>();
String s = list.get(18);
Visa undantaget på skärmen och ange dess typ.
5 5. Undantag när du arbetar med kartsamlingar
Fånga undantaget som inträffar när du kör koden:
HashMap<String, String> map = new HashMap<String, String>(null);
map.put(null, noll);
map.remove(null);
Visa undantaget på skärmen och ange dess typ.
- Tips: skriv först ett program, se sedan vilket undantag som inträffar och ändra sedan koden och fånga det undantaget.

7 Risha, Hur flera fångster fungerar

Old Level 09 - 16– Nu några mer intressanta föreläsningar. Jag gillar att lära ut så mycket. – Jag vill berätta hur en multipelfångst fungerar . Egentligen är det väldigt enkelt: när ett undantag inträffar i blocket try överförs programexekveringen till den första catchen . - Om typen som anges inom parentes av blockfångsten är densamma som typen av undantagsobjektet, startar kodexekveringen inuti {}. Annars går vi till nästa fångst . Kontrollen upprepas där. - Om det inte finns fler fångstblock , men undantaget inte har fångats, kastas det framåt och den aktuella metoden avbryts. - Jag förstår. Den fångsten kommer att exekveras, vars typ matchar typen av undantag. - Ja exakt. Egentligen är det lite mer komplicerat: Poängen är att klasserna kan ärvas från varandra. Om klassen «Ko» ärvs från klassen «Djur», får objektet av typen «Ko» lagras inte bara i en variabel av typen «Ko», utan även i en variabel av typen «Djur» . - Än sen då? - Eftersom alla undantag ärvs från klasserna Exception eller RuntimeException (som också ärvs från Exception ), kan de alla fångas med kommandon catch (Exception e) eller catch (RuntimeException e) . - Än sen då? - Detta innebär att,först kan du fånga vilket undantag som helst med kommandot catch(Exception e) . För det andra spelar ordningen på fångstblocken någon roll. Exempel: - Aritmetiskt Undantag från division med 0 fångas i den andra fångsten. Old Level 09 - 17- I exemplet nedan fångas ArithmeticException i första catch , eftersom klasser av alla undantag ärvs från Exception. Så, Exception fångar alla undantag . Old Level 09 - 18- I exemplet nedan fångas inte undantaget ArithmeticException , utan kastas vidare till anropsmetoden. Old Level 09 - 19– Nåväl, det blir tydligare nu. Dessa undantag är inte så lätta. – Det verkar bara så. Faktum är att det är något av det enklaste i Java. – Jag är osäker på om jag ska vara nöjd eller upprörd över det...

8 Diego, Flera undantagsfångstuppgifter

- Hej, Amigo! Igår blev jag full och överkomplicerade dina uppgifter, men jag hoppas att det inte finns några hårda känslor från din sida och att du kommer att lösa alla? Det är för ditt eget bästa. Här:
Uppgifter
1 1. Undantag
Det finns en metod som kastar två undantag som ärvs från Exception , och de andra två ärvda från RuntimeException : NullPointerException , ArithmeticException , FileNotFoundException och URISyntaxException .

Du måste fånga NullPointerException och FileNotFoundException , men inte för att fånga ArithmeticException och URISyntaxException . Hur man gör det?
2 2. Fånga undantag
Det finns tre undantag som ärvs sekventiellt från Undantag :
klass Undantag1 utökar Undantagsklassen
Undantag2 utökar Undantag1
klass Undantag3 utökar Undantag2
Det finns en metod som beskrivs enligt följande:
public static void method1() kastar Undantag1, Undantag2, Undantag3

Skriv en fångst blockera för att fånga alla tre Exception1 , Exception2 och Exception3
3 3. Fånga selektiva undantag
1. Ta reda på vilka undantag som skapas av metoden BEAN.methodThrowExceptions .
2. Metoden processExceptions() ska anropa metoden BEAN.methodThrowExceptions och hantera undantag:
2.1. om ett undantag FileSystemException inträffar, logga det genom att anropa metoden BEAN.log och kasta framåt
2.2. om ett undantag CharConversionException eller något annat IOException inträffar, logga det bara genom att anropa metoden BEAN.log
3. Lägg till klassen/typen för undantaget du vidarebefordrar i 2.1. till processExceptions()metodsignatur.
4. Hantera det återstående undantaget i metoden main() och logga det. Använd try..catch

Tips:
Om du fångade undantaget MyException , som du inte ville fånga, kan du kasta det framåt med följande kod:
catch (MyException e) {
throw e;
}
4 4. Fånga kontrollerade undantag
Hantera alla markerade undantag i metoden processExceptions() .
Du måste visa varje markerat undantag som har inträffat på skärmen.
Du får bara använda ett blockförsök .
5 5. Fånga omarkerade undantag
Hantera alla omarkerade undantag i metoden processExceptions() .
Du måste visa ett stackspår på skärmen för varje inträffat undantag med metoden printStack() .
Du får bara använda ett blockförsök .

9 Professor, Föreläsning om undantag

– Idag har vi ett superintressant ämne – undantag. På den tiden, när unga vetenskapsmän och programmerare var djupt entusiastiska över detta ämne... - Förlåt, jag måste gå till labbet. Här är föreläsningsanteckningar. Jag tror att du kommer att reda ut det själv. Här: Java Exceptions (Oracle Documentation) Exception Hantering i Java (Java T-punkt) Java - Exceptions Hantering (handledningspunkt) Grundläggande Java Exception Handling

10 Julio

- Amigo, vad tycker du om dagens lektion? Har din positronhjärna inte fungerat ännu? Diegos uppgifter räcker för att slita ut vem som helst. Låt oss ta en ölstund och koppla av. Står du fortfarande?

11 kapten ekorrar

- Hej, soldat! - God morgon herrn! - Jag har fantastiska nyheter till dig. Här är en snabb kontroll för att stärka dina färdigheter. Gör det varje dag, och du kommer att förbättra dina färdigheter riktigt snabbt. Uppgifter är speciellt utformade för att göra i Intellij IDEA.
Ytterligare uppgifter att göra i Intellij Idea
1 1. Division med noll
Skapa en metod public static void divisionByZero() , där du måste dividera valfritt tal med noll och visa resultatet av divisionen på skärmen.
Slå in divisionByZero() -metodanropet till ett try..catch . Visa undantagsstackspårningen på skärmen med metoden exception.printStackTrace() .
2 2. Nedräkning från 10 till 0
Skriv en loop till nedräkning från 10 till 0. Använd Thread.sleep(100) för att göra en fördröjning;
Slå in sömnsamtalet till ett försök..fångst .
3 3. Slå in en metod till ett försök..fångst
Läs siffror från tangentbordet. Skriv en kod för att läsa siffror från tangentbordet till en separat metod readData() .
Slå in hela den här metoden (hela koden inuti metoden readData() , förutom deklarationen av listan där siffrorna kommer att lagras) i en try..catch .

Om användaren skriver in text istället för att ange ett nummer, måste metoden fånga undantaget och visa alla siffror som skrivits in tidigare på skärmen.
Visa siffror på skärmen. Varje nummer ska finnas på en ny rad. Siffrornas ordning ska vara precis som den var i inmatningen.
4 4. Datumomvandlare
Läs från tangentbordet ett datum i formatet «08/18/2013»
Visa på skärmen detta datum i form av «18 AUGUSTI 2013».
Använd objekten Date och SimpleDateFormat .
5 5. Vokaler och konsonanter
Skriv ett program som läser rad från tangentbordet.
Programmet ska visa två strängar på skärmen:
1) den första strängen ska innehålla vokaler
2) den andra strängen ska innehålla konsonanter och skiljetecken från den inmatade texten.
Separera tecken med mellanslag.

Exempelinmatning:
Stop look listen
Exempelutgång:
oooie
stplklstn
6 6. Sagan om Rödluvan
1. Det finns fem klasser: Rödluvan, mormor, patty, vedhuggare, varg.
2. Varje klass har två fält av typen ArrayList : dödade och åt.
3. Nödvändiga föremål är redan skapade (huva, mormor, ...).
4. Skapa den korrekta relationen (vem åt och dödade vem) för att få logiken i «Rödluvan».
7 7. Flytta statiska modifieringar
Flytta statiska modifierare så att koden kompileras.
8 8. Lista med arrayer av nummer
Skapa en lista vars element är arrayer av siffror. Lägg till fem objektmatriser med längden 5, 2, 4, 7, 0 respektive. Fyll matriser med alla data och visa dem på skärmen.
9 9. Tio katter
Skapa en klasskatt med ett fält Strängnamn .
Skapa en ordbok Karta<String, Cat> , lägg till 10 katter på modellen «Name» - «Cat».
Få en uppsättning namn från kartan och visa uppsättningen på skärmen.
– De uppgifterna var för greener. Jag lade till bonusuppgifter av högre komplexitet. Endast för toppvapen.
Bonusuppgifter
1 1. Programmet kompilerar och körs inte. Fixa det.
Uppgift: Programmet ska läsa två filnamn från tangentbordet och kopiera den första filen till den plats som anges av det andra namnet.
2 2. Lägg till ny funktionalitet i programmet.
Gammal uppgift: Programmet ska läsa två filnamn från tangentbordet och kopiera den första filen till den plats som anges av det andra namnet.
Ny uppgift: Programmet ska läsa två filnamn från tangentbordet och kopiera den första filen till den plats som anges av det andra namnet.

Om filen (som kommer att kopieras) med det angivna namnet inte existerar, bör programmet visa meddelandet «Filen finns inte» på skärmen och försöka läsa filnamnet från konsolen igen innan du läser filen namnet på den andra (mål)filen.
3 3. Att lära sig och öva på algoritm.
Läs listan med ord och siffror från tangentbordet. Visa på skärmen ord i stigande ordning och siffrorna i fallande ordning.

Exempelinmatning:
Körsbär
1
Böna
3
Äpple
2
0
Vattenmelon

Exempelutgång:
Äpple
3
Böna
2
Körsbär
1
0
Vattenmelon