CodeGym /Java blog /Tilfældig /Gammelt niveau 09
John Squirrels
Niveau
San Francisco

Gammelt niveau 09

Udgivet i gruppen

Viden vs. færdigheder

Gammelt niveau 09 - 1College lærte os, at der ikke er nogen stor forskel mellem teori og praksis. Nå, du forstår sikkert, at det ikke er det samme. Men du kan ikke se kerneforskellen. Alligevel er der en. De fleste mennesker sætter lighedstegnet mellem "jeg ved" og "jeg kan". Gør du? Hvad med et par eksempler?
  1. Jeg ved godt, at rygning er dårligt for mig, men jeg ryger.
  2. Jeg ved godt, at fastfood er dårligt for mig, men jeg spiser det.
  3. Jeg kender færdselsreglerne, men jeg kan ikke køre.
  4. Jeg ved, at jogging er godt for mig, men jeg jogger ikke om morgenen.
Det sker ofte, at folk tager "jeg ved" for "jeg kan". Det er et godt eksempel med færdselsregler. Hvis en person kender reglerne og ved, hvordan man kører, betyder det, at han kan køre? Nix. Hvad hvis han tror, ​​han ved, hvordan man kører? Så hvorfor skulle han have brug for en instruktør - han ved allerede alt. Når du er sikker på, at du allerede ved alt, vil du sandsynligvis ikke lære noget nyt. Og hvis du er sikker på, at du ved, hvordan du gør alt, vil du ikke studere. En tanke som denne vil ikke engang strejfe dit sind. Og det betyder, at du går glip af alle de vidunderlige muligheder for at lære noget. Sædvanlig college giver dig kun viden; du bliver nødt til at tilegne dig færdigheder på egen hånd. Men hvad hører jeg? Har du haft praksis udover teori på dit college? Ok, hvis du studerede på fysikfakultetet, lav en arbejdsmodel af en dampmaskine med en effektivitet på mindst 20%. Jeg vil vædde på, at du ved, hvordan man gør det, men du vil faktisk ikke være i stand til at gøre det, har jeg ret? Er du kemiker ? Lav røgfrit pulver. Du ved hvordan, men du kan ikke, ha? Matematiker, er du? Beregn banen for en artillerigranat. Glem ikke at tage hensyn til formen på skallen. Matematiske prikker flyver ikke i det virkelige liv. Og der er ingen kugleformede heste. Gammelt niveau 09 - 2Biolog? Isoler penicillin. Denne skimmelsvamp vokser på meloner, så du ved det. Du ved hvordan - vidunderligt! Kan du gøre det? Økonom?Lav en prognose for prisstigning på olie. Færdig? Og forvandl det nu til $2.000 eller $200.000 om året baseret på din prognose. Har du nogensinde spillet på FOREX? For rigtige penge? Eller ved du bare hvad det er? International økonomi? Glimrende! Hvor åbner jeg et offshore-selskab? I Hong-Cong, Irland eller i USA. Hvorfor? Selvom du ved det, hvilket er tvivlsomt, vil du næppe kunne gøre det, da du faktisk aldrig har gjort det. Du har ikke engang en anelse om, hvordan du gør det. Åh, du studerede det ikke på college? Hvilken ret har jeg til at give dig opgaver, du ikke er forberedt på? For det er det virkelige livs opgaver. Dette ER praksis , alt hvad du har studeret på kollegiet er: kugleformede heste, perfekt konkurrence – intet af det eksisterer i det virkelige liv. Men hvorfor har jeg glemt at nævnemarketing specialist ? Hvad er den bedste måde at bruge mine $500 på, så så mange mennesker som muligt kender til mine forelæsninger? på reklame? Er du klar over, at ikke kun klassisk reklame allerede er forældet, men også konceptet USP (unique selling proposition), som jeg er sikker på, at du blev undervist på college som et næsten unikt vidundermiddel. Glem du ved noget. Spørg dig selv - hvad kan jeg gøre? Nyttigt, mener jeg? Noget folk ville betale penge for? Gode ​​penge, mener jeg? Så venner, lad os udtrykke taknemmelighed over et så vidunderligt kursus som CodeGym. På grund af det vil du ikke kun vide, hvordan du programmerer, men du vil faktisk være i stand til at gøre det. Du vil også kunne få et job og tjene gode penge om et par år. Jeg håber, at disse penge rækker til at bo rart og hyggeligt. Jeg siger det igen, så du husker: det er lige meget, hvad du ved. Det eneste, der betyder noget, er, hvilke nyttige færdigheder du har, dem folk ville være ivrige efter at betale dig. Jo før du forstår dette, jo bedre.

Du har nået et nyt niveau

Niveau 9

Gammelt niveau 09 - 3

1 Risha, Stakspor

Gammel niveau 09 - 4- Hej! I dag vil jeg fortælle dig, hvad staksporet er. Men lad mig først forklare dig, hvad stakken er. - Forestil dig en stak papirer - opgaver til en bestemt ekspedient. En ny opgave kan lægges på toppen af ​​stakken, og han vil tage en opgave fra toppen af ​​en stak. Opgaverne udføres således ikke efter først-til-mølle. Hver gang ekspedienten tager den opgave, der kommer sidst. En sådan opsamlingsstruktur kaldes en stak . - I Java er der en særlig samling - Stack. Denne samling har metoderne «tilføj et element» og «tag(få/tag væk) et element». Som du allerede ved, tages det sidst tilføjede element først. - Hum. Det er vel ikke svært. - Bøde. Så lad mig forklare, hvad et stakspor erer. - Forestil dig, at funktionen i Java kalder funktion B , og sidstnævnte kalder funktionen C , som igen kalder funktion D . Så for at afslutte funktion B , skal du først afslutte funktion C , og for at gøre det skal du afslutte funktion D. Dette minder meget om en stak. - Og hvad er ligheden? - I stakken, for at komme til en bestemt opgave, skal du også udføre alle de opgaver, der er lagt ovenpå. - Nå, det er lidt en analogi, men jeg er ikke sikker på, om jeg forstår alt rigtigt. - Se her. I Java er en stak et sæt elementer. Det er som ark papir i en stak. For at tage det tredje fra toppen skal du tage det andet ark, men før det skal du tage det første. Du kan altid lægge og tage ark, men du kan kun lægge dem på toppen og kun tage dem fra toppen. Det samme gælder for funktionskaldet. Funktion А kalder funktion B , sidstnævnte kalder funktion C. For at afslutte А skal du først afslutte B , og for at gøre dette skal du afslutte C. - Vent et øjeblik. Hvis jeg fik det rigtigt, viser hele stakken sig i «kun det sidste ark, der blev lagt på stakken, kan tages» og «først skal den sidst kaldte funktion afsluttes». Er det rigtigt? - Ja. Så rækkefølgen af ​​funktionsopkald er «funktionsopkaldsstakken» eller blot «opkaldsstakken». Funktionen kaldet sidst skal afsluttes først. Lad os se på eksemplet: Gammelt niveau 09 - 5- OK. Alt er klart med funktionskaldet, tror jeg. Men hvad er dette StackTraceElement ? - Java virtual machine logger alle funktionskaldene. Til dette formål har den en speciel samling - stak. Når en funktion kalder en anden, placerer JVM et nyt element StackTraceElement i denne stak. Når funktionen slutter, slettes elementet fra stakken. Denne stak gemmer således altid opdateret information om den aktuelle tilstand af «funktionsopkaldsstakken». - Hvert StackTraceElementindeholder information om kaldet metode. Så du kan få navnet på denne metode ved at bruge getMethodName . - Eksemplet ovenfor viser det:
  1. Hent «opkaldsstakken»:
  2. Gentag arrayet ved hjælp af loop for-each . Jeg håber ikke du har glemt det.
  3. Udskriv metodenavne til System.out .
- En interessant ting, og tilsyneladende let. Tak, Risha!

2 Diego, Task on stack trace display

- Hej, Amigo! Her er en lille opgave til at vise et stakspor på skærmen.
Opgaver
1 Hver metode skal returnere sin StackTrace
Write fem metoder, der kalder hinanden. Hver metode skal returnere sin StackTrace.
2 StackTrace igen
Skriv fem metoder, der kalder hinanden. Hver metode skal returnere navnet på dens opkaldsmetode. Du kan få opkaldsmetoden ved hjælp af StackTrace.
3 Metoden skal returnere linjenummeret på den kode, denne metode blev kaldt fra.
Skriv fem metoder, der kalder hinanden. Hver metode skal returnere linjenummeret på den kode, som denne metode blev kaldt fra. Brug funktionen element.getLineNumber() .
4 Stakspor på 10 opkald
Skriv kode for at få et stakspor på 10 opkald.
5 Metoden skal returnere et resultat - dens staksporingsdybde
Skriv en metode, der viser og returnerer dens staksporingsdybde. Staksporingsdybde er antallet af dets metoder (antallet af elementer på listen).

3 Elly, fejl og undtagelser

- Hej, Amigo! I dag har vi en meget interessant lektion. Jeg vil fortælle dig om undtagelser. Undtagelse er en særlig mekanisme til at kontrollere fejl i programmet. Her er nogle eksempler på fejl, der kan opstå i programmet:
  1. Programmet forsøger at skrive en fil til den fulde disk.
  2. Programmet forsøger at kalde en metode for en variabel, der gemmer nul-referencen.
  3. Programmet forsøger at dividere et tal med 0.
Disse handlinger resulterer i en fejl. Normalt fører dette til lukning af et program – det nytter ikke noget at fortsætte med at udføre koden. - Hvorfor det? - Er der nogen mening i at dreje rattet, når bilen falder ned fra en klippe? - Mener du, at programmet skal slutte? - Ja. Sådan var det før. Enhver fejl førte til afslutning af et program. - Det er en meget smart beslutning. - Ville det ikke være bedre at prøve at arbejde videre? - Ja. Du har skrevet en stor tekst i MS Word, gemt den, den er ikke blevet gemt, men programmet fortæller dig, at alt er i orden. Og du fortsætter med at skrive. Dumt, ikke? - Ja. - Så kom programmører med et interessant træk:hver funktion returnerede status for sit arbejde. 0 betød, at funktionen virkede, som den skulle, enhver anden værdi – at der var en fejl : denne værdi var en fejlkode. - Men denne tilgang havde en ulempe. Efter hvert (!) funktionskald skulle du kontrollere koden (nummeret) returneret af funktionen. For det første var det ubelejligt: ​​fejlhåndteringskoden blev sjældent udført, men du skulle altid skrive den. For det andet returnerer funktionerne i sig selv ofte forskellige værdier - hvad skal man gøre med dem? - Ja. Det var det, jeg ville spørge om. - Så kom en lys fremtid - undtagelser og fejlhåndtering var dukket op. Sådan fungerer det:
  1. Når der opstår en fejl, opretter Java Virtual Machine et særligt objekt – en undtagelse – der indeholder alle oplysninger om fejlen. For forskellige fejl er der forskellige undtagelser.
  2. Så tvinger denne undtagelse programmet til at afbryde den aktuelle funktion med det samme, og den næste funktion, indtil den afslutter hovedmetoden. Herefter afsluttes programmet. Java-udviklere kalder denne proces «ruller opkaldsstakken tilbage».
- Men du har sagt, at programmet ikke kommer til at afslutte med sikkerhed. - Det er rigtigt, for der er en måde at fange undtagelsen på. Når og hvor du har brug for det, kan du skrive en speciel kode for at fange disse undtagelser og gøre noget vigtigt. - For at gøre dette er der en speciel konstruktionsprøvefangst . Se, hvordan det virker: Gammelt niveau 09 - 6- Hvorfor «Efter metode1-kald. Vil aldrig blive vist» vil ikke blive vist på skærmen? - Jeg er glad for, at du spurgte om det. I linje 25 er der en division med nul. Dette fører til en fejl - en undtagelse. Java virtual machine oprettede objektet ArithmeticException , der indeholder fejlinformationen. Dette objekt er en undtagelse. - Der opstod en undtagelse i metoden method1() .Dette resulterede i, at metoden blev afsluttet med det samme. Det ville også føre til opsigelse af metoden main , hvis der ikke var nogen try-catch blok. - Hvis der opstår en undtagelse inde i try-blokken, vil den blive fanget i catch- blokken. Resten af ​​koden i blokforsøget vil ikke blive udført, udførelsen af ​​blokfangsten vil starte med det samme. - Jeg forstår det ikke helt. - Med andre ord fungerer denne kode sådan her:
  1. Hvis der opstår en undtagelse inde i try- blokken, udføres koden i denne blok ikke længere, men udførelsen af ​​blok- fangsten starter.
  2. Hvis der ikke er nogen undtagelse, udføres try-blokken til slutningen , og catch udføres aldrig .
- Ahem! - Forestil dig, at vi efter hvert metodekald kontrollerer, om den kaldede metode er afsluttet af sig selv eller på grund af undtagelse. Hvis der var en undtagelse, begynder JVM at udføre blokfangsten, hvis den er tilgængelig, og fanger en undtagelse. Hvis der ikke er nogen catch-blok, afslutter JVM den aktuelle metode. Så begynder den samme kontrol i den metode, der kaldte den aktuelle metode. - Nu tror jeg, jeg fik det. - Det er fint. - Og hvad er den undtagelse inde i fangeblokken? - Alle undtagelserne er klasser, der er arvet fra klassen Undtagelse. Vi kan fange enhver af dem ved at angive dens klasse i fangstenblok, eller dem alle på én gang ved at angive en fælles overordnet klasse Undtagelse. Fra variablen e (denne variabel gemmer referencen til et undtagelsesobjekt) kan du få alle de nødvendige oplysninger om fejlen. - Store! Og hvad hvis der i min metode forekommer forskellige undtagelser, må jeg håndtere dem på forskellige måder? - Du skal. Du kan gøre det sådan: Gammelt niveau 09 - 7- Prøv-blokken kan indeholde flere catch- blokke, som hver vil fange undtagelser af sin type. - Uhm. Nå, jeg har det sådan set. Sådan noget vil jeg selvfølgelig ikke selv skrive. Jeg bliver dog ikke bange, hvis jeg møder sådan en kode.

4 Elly, RuntimeException, kaster

Gammelt niveau 09 - 8- Jeg besluttede at tage et andet emne op i dag. I Java er alle undtagelser opdelt i to typer – kontrolleret/kontrolleret og ukontrolleret/ikke markeret . Markerede undtagelser skal fanges, umarkerede kan fanges, men det er ikke påkrævet . - Er det muligt at smide undtagelser i en kode med vilje? - I din kode kan du selv smide undtagelser. Du kan endda skrive dine egne undtagelser. Men vi kommer dybt ned i dette hul senere. Lad os nu lære, hvordan man arbejder med undtagelserne fra den virtuelle Java-maskine. - OKAY. - Hvis undtagelser ClassNotFoundException og FileNotFoundExceptionkastes (vises) i en metode, skal programmøren angive dem i signaturen af ​​en metode (metodehoved). Sådanne undtagelser kontrolleres. Sådan ser det normalt ud: Gammelt niveau 09 - 9- Så vi skriver bare kast og lister undtagelser adskilt af kommaer. Højre? Er det rigtigt? - Ja. Men der er en anden interessant ting. For at eksemplet nedenfor er blevet kompileret, skal metoden, der kalder metode1() , enten fange disse undtagelser eller kaste dem frem. Hvis du ønsker at sende markeret undtagelse frem, skal du angive det i metodens header . - Endnu en gang, hvis du er i hovedmetoden , vil du kalde en metode, der har i sin overskriftssætning kaster FileNotFoundException, ...så skal du gøre en af ​​disse to ting:
  1. for at fange undtagelser FileNotFoundException, …
    Du bliver nødt til at indpakke koden, hvor du kalder en farlig metode med en try-catch- blok
  2. ikke at fange undtagelser FileNotFoundException, ...
Du bliver nødt til at tilføje disse undtagelser til listen over udsendelser af din hovedmetode . - Vil du give mig et eksempel? - Se her: Gammelt niveau 09 - 10- Dette eksempel vil ikke blive kompileret, fordi metoden main kalder metoden method1(), som kaster undtagelser, der skal fanges. - For at eksemplet kan kompileres, skal du tilføje undtagelseshåndtering til metoden main . Det kan du gøre på to måder: Gammelt niveau 09 - 11- Og her fanger vi det ved hjælp af try-catch : Gammelt niveau 09 - 12- Det bliver tydeligere, men meget lidt. - Se i eksemplet nedenfor: Gammelt niveau 09 - 13- Der er stadig en undtagelse - RuntimeException og klasser, der er arvet fra den.Det er ikke nødvendigt at fange eller kaste dem. Disse er ukontrollerede undtagelser. Disse undtagelser anses for at være svære at forudsige, så det er næsten umuligt at forudsige deres forekomst. Du kan gøre de samme ting med dem, men der er ingen grund til at angive dem i kast .

5 Risha, Rulning af opkaldsstakken, hvordan man gør det i undtagelser

- Jeg vil gerne fortælle lidt mere om, hvordan undtagelser fungerer. Eksemplet nedenfor forklarer, at: Gammelt niveau 09 - 14- Jeg forstår det ikke. - Okay. Jeg vil forklare, hvad der foregår. - I eksemplet til venstre kalder vi flere metoder i kædeorden. I metode2() opretter og kaster vi specifikt en undtagelse (for at starte en fejl). - Eksemplet til højre viser, hvad der sker. Se på metode2() . Det er, hvad oprettelse af en undtagelse forvandles til: vi opretter et objekt af typen RuntimeException , gemmer det i en speciel variabel undtagelse og afslutter straks metoden – return . - I metode1 , efter kaldet af metode2 er der en kontrol,hvis der er en undtagelse eller ej; hvis der er en undtagelse, afsluttes metode1 øjeblikkeligt. Denne kontrol udføres implicit efter at have kaldt hver (!) Java-metode. - Wow! - Nemlig. - I kolonnen til højre i hovedmetoden skrev jeg, hvad der sker, når en undtagelse fanges af try-catch- blokken. Hvis der ikke var nogen undtagelse, fortsætter koden med at køre som planlagt. Hvis der var en undtagelse af typen angivet i catch , så håndterer vi det. - Og hvad betyder throw og instanceof ? - Se på den sidste linje til venstre smid nye RuntimeException(s). På denne måde skaber og kaster vi en undtagelse. Dette er blot et eksempel. Vi vil ikke gøre det indtil videre. - Ved at bruge kommandoen « а instans af B » i højre blok kontrollerer vi, om objektet a har typen B. Det vil sige, om objektet, der er gemt i variablen undtagelse, har typen RuntimeException . Det er et logisk udtryk. - Nå, det bliver lidt klarere.

6 Diego, Undtagelsesfangstopgave

- Se her! Onkel Diego kom med få opgaver til at fange til dig. Held og lykke. Jeg tror, ​​du får brug for det. Heh. Gammelt niveau 09 - 15- Hej, Amigo! Her er nogle interessante undtagelsesfangstopgaver.
Fangstopgaver
1 1. Undtagelse ved drift med tal
Fang den undtagelse, der opstår, når koden køres:
int a = 42 / 0;
Vis undtagelsen på skærmen, og angiv dens type
2 2. Undtagelse ved drift med strenge
Fang den undtagelse, der opstår, når koden køres:
String s = null;
String m = s.toLowerCase();
Vis undtagelsen på skærmen, og angiv dens type.
3 3. Undtagelse ved drift med arrays
Fang den undtagelse, der opstår, når koden køres:
int[] m = new int[2];
m[8] = 5;
Vis undtagelsen på skærmen, og angiv dens type.
4 4. Undtagelse ved drift med List-samlinger
Fang den undtagelse, der opstår, når koden køres:
ArrayList<String> list = new ArrayList<String>();
String s = liste.get(18);
Vis undtagelsen på skærmen, og angiv dens type.
5 5. Undtagelse ved drift med kortsamlinger
Fang den undtagelse, der opstår, når koden køres:
HashMap<String, String> map = new HashMap<String, String>(null);
map.put(nul, null);
map.remove(nul);
Vis undtagelsen på skærmen, og angiv dens type.
- Tip: skriv først et program, se derefter, hvilken undtagelse der opstår, og skift derefter koden og fang den undtagelse.

7 Risha, hvordan multiple catch fungerer

Gammelt niveau 09 - 16- Nu nogle mere interessante foredrag. Jeg holder så meget af at undervise. - Jeg vil gerne fortælle dig, hvordan en multiple catch fungerer. Faktisk er det meget enkelt: Når der opstår en undtagelse i blokforsøget , overføres programafviklingen til den første catch . - Hvis typen, der er angivet i parentes af blokfanget, er den samme som typen af ​​undtagelsesobjektet, starter kodeudførelsen inde i {}. Ellers går vi til næste fangst . Kontrollen gentages der. - Hvis der ikke er flere fangblokke , men undtagelsen ikke er fanget, kastes den frem, og den aktuelle metode afbrydes. - Jeg ser. Denne fangst vil blive udført, hvis type matcher typen af ​​undtagelse. - Ja højre. Egentlig er det lidt mere kompliceret: Pointen er, at klasserne kan arves fra hinanden. Hvis klassen «Ko» er nedarvet fra klassen «Dyr», kan objektet af typen «Ko» ikke kun lagres i en variabel af typen «Ko», men også i en variabel af typen «Dyr» . - Og hvad så? - Da alle undtagelserne er nedarvet fra klasserne Exception eller RuntimeException (som også er nedarvet fra Exception ), kan de alle blive fanget ved hjælp af kommandoerne catch (Exception e) eller catch (RuntimeException e) . - Og hvad så? - Det betyder at,For det første kan du fange enhver undtagelse ved at bruge kommandoen catch(Exception e) . For det andet betyder rækkefølgen af ​​fangblokkene noget . Eksempler: - ArithmeticException , der er resultatet af division med 0, fanges i den anden catch. Gammelt niveau 09 - 17- I eksemplet nedenfor er ArithmeticException fanget i den første catch , fordi klasser af alle undtagelserne er nedarvet fra Exception. Så Undtagelse fanger enhver undtagelse . Gammelt niveau 09 - 18- I eksemplet nedenfor er undtagelsen ArithmeticException ikke fanget, men kastet videre til kaldemetoden. Gammelt niveau 09 - 19- Nå, det bliver mere klart nu. Disse undtagelser er ikke så lette. - Det ser kun sådan ud. Faktisk er det en af ​​de enkleste ting i Java. - Jeg er i tvivl om jeg skal være glad eller ked af det...

8 Diego, Flere undtagelsesfangstopgaver

- Hej, Amigo! I går blev jeg fuld og overkomplicerede dine opgaver, men jeg håber, at der ikke er nogle hårde følelser fra din side, og at du vil løse dem alle? Det er for dit eget bedste. Her:
Opgaver
1 1. Undtagelser
Der er en metode, der kaster to undtagelser nedarvet fra Exception , og de to andre arvet fra RuntimeException : NullPointerException , ArithmeticException , FileNotFoundException og URISyntaxException .

Du skal fange NullPointerException og FileNotFoundException , men ikke for at fange ArithmeticException og URISyntaxException . Hvordan gør man det?
2 2. Fange undtagelser
Der er tre undtagelser arvet sekventielt fra Undtagelse :
klasse Undtagelse1 udvider Undtagelsesklasse
Undtagelse2 udvider Undtagelse1
klasse Undtagelse3 udvider Undtagelse2
Der er en metode, som beskrives som følger:
offentlig statisk void metode1() kaster Undtagelse1, Undtagelse2, Undtagelse3

Skriv en fangst blok for at fange alle de tre Undtagelse1 , Undtagelse2 og Undtagelse3
3 3. Indfangning af selektive undtagelser
1. Find ud af, hvilke undtagelser der fremkommer af metoden BEAN.methodThrowExceptions .
2. Metoden processExceptions() skal kalde metoden BEAN.methodThrowExceptions og håndtere undtagelser:
2.1. hvis en undtagelse FileSystemException opstår, så log den ved at kalde metoden BEAN.log og smid frem
2.2. hvis der opstår en undtagelse CharConversionException eller en anden IOException , skal du blot logge den ved at kalde metoden BEAN.log
3. Tilføj klassen/typen for den undtagelse, du videresender i 2.1. til processExceptions()metode signatur.
4. Håndter den resterende undtagelse i metoden main() og log den. Brug try..catch

Tip:
Hvis du fangede undtagelsen MyException , som du ikke ville fange, kan du smide den frem ved hjælp af følgende kode:
catch (MyException e) {
throw e;
}
4 4. Indfangning af kontrollerede undtagelser
Håndter alle de kontrollerede undtagelser i metoden processExceptions() .
Du skal vise hver kontrolleret undtagelse, der er opstået, på skærmen.
Du må kun bruge ét blokforsøg .
5 5. Indfangning af umarkerede undtagelser
Håndter alle umarkerede undtagelser i metoden processExceptions() .
Du skal vise et stakspor på skærmen af ​​hver opstået undtagelse ved hjælp af metoden printStack() .
Du må kun bruge ét blokforsøg .

9 Professor, Foredrag om undtagelser

- I dag har vi et superinteressant emne - undtagelser. På det tidspunkt, hvor unge videnskabsmænd og programmører var dybt begejstrede for dette emne... - Undskyld, jeg må gå til laboratoriet. Her er forelæsningsnotater. Jeg tror, ​​du vil finde ud af det selv. Her: Java Exceptions (Oracle Documentation) Exception Handling i Java (Java T point) Java - Exceptions Handling (tutorials point) Basic Java Exception Handling

10 Julio

- Amigo, hvad synes du om dagens lektion? Har din positron hjerne ikke fungeret endnu? Diegos opgaver er nok til at slide enhver. Lad os få en ølstund og slappe af. Står du stadig?

11 kaptajn egern

- Hej, soldat! - Godmorgen hr! - Jeg har nogle fantastiske nyheder til dig. Her er et hurtigt tjek for at styrke dine færdigheder. Gør det hver dag, og du vil hurtigt forbedre dine færdigheder. Opgaver er specielt designet til at udføre i Intellij IDEA.
Yderligere opgaver at udføre i Intellij Idea
1 1. Division med nul
Opret en metode public static void divisionByZero() , hvor du skal dividere et hvilket som helst tal med nul, og vise resultatet af divisionen på skærmen.
Pak divisionByZero() -metodekaldet ind i et try..catch . Vis undtagelsesstacksporingen på skærmen ved hjælp af metoden exception.printStackTrace() .
2 2. Nedtælling fra 10 til 0
Skriv en løkke til nedtælling fra 10 til 0. Brug Thread.sleep(100) til at lave en forsinkelse;
Pak søvnopkaldet ind i et forsøg..fangst .
3 3. Pak en metode ind i en try..catch
Læs tal fra tastaturet. Skriv en kode til at læse tal fra tastaturet til en separat metode readData() .
Pak hele denne metodes krop (hele koden inde i readData()- metoden, undtagen erklæringen af ​​listen, hvor tallene vil blive gemt) i en try..catch .

Hvis brugeren indtaster noget tekst i stedet for at indtaste et tal, skal metoden fange undtagelsen og vise alle de tal, der er indtastet før, på skærmen.
Vis tal på skærmen. Hvert tal skal stå på en ny linje. Rækkefølgen af ​​numre skal være ligesom den var i input.
4 4. Datokonverter
Læs fra tastaturet en dato i formatet «18/08/2013»
Vis den dato på skærmen i form af «18. AUG 2013».
Brug objekterne Dato og SimpleDateFormat .
5 5. Vokaler og konsonanter
Skriv et program, der læser linje fra tastaturet.
Programmet skal vise to strenge på skærmen:
1) den første streng skal indeholde vokaler
2) den anden streng skal indeholde konsonanter og tegnsætningstegn fra den indtastede tekst.
Adskil tegn med mellemrum.

Eksempel input:
Stop look listen
Eksempel output:
oooie
stplklstn
6 6. Fortællingen om Den Lille Rødhætte
1. Der er fem klasser: Rødhætte, bedstemor, patty, skovhugger, ulv.
2. Hver klasse har to felter af typen ArrayList : dræbt og spist.
3. Nødvendige genstande er allerede skabt (hætte, bedstemor, ...).
4. Skab det korrekte forhold (hvem spiste og dræbte hvem) for at få logikken bag «Rødhætten».
7 7. Flyt statiske modificerer
Flyt statiske modifikatorer, så koden kompileres.
8 8. Liste over arrays af tal
Opret en liste, hvis elementer er arrays af tal. Tilføj til listen fem objektarrays med længden henholdsvis 5, 2, 4, 7, 0. Fyld arrays med alle data og vis dem på skærmen.
9 9. Ti katte
Opret en klassekat med et felt Strengnavn .
Opret en ordbog Kort<String, Cat> , tilføj 10 katte på modellen «Navn» - «Kat».
Få et sæt navne fra kortet , og vis sættet på skærmen.
- De opgaver var for grønne. Jeg tilføjede bonusopgaver af højere kompleksitet. Kun til toppistoler.
Bonus opgaver
1 1. Programmet kompilerer og kører ikke. Lav det.
Opgave: Programmet skal læse to filnavne fra tastaturet og kopiere den første fil til den placering, der er angivet med det andet navn.
2 2. Tilføj ny funktionalitet til programmet.
Gammel opgave: Programmet skal læse to filnavne fra tastaturet og kopiere den første fil til den placering, der er angivet med det andet navn.
Ny opgave: Programmet skal læse to filnavne fra tastaturet og kopiere den første fil til den placering, der er angivet med det andet navn.

Hvis filen (der skal kopieres) med det angivne navn ikke eksisterer, skal programmet vise meddelelsen «Filen findes ikke» på skærmen og prøve at læse filnavnet fra konsollen igen, før du læser filen navnet på den anden (destination) fil.
3 3. At lære og praktisere algoritme.
Læs listen over ord og tal fra tastaturet. Vis på skærmen ord i stigende rækkefølge og tallene i faldende rækkefølge.

Eksempel på input:
Kirsebær
1
Bønne
3
Æble
2
0
Vandmelon

Eksempel på output:
Æble
3
Bønne
2
Kirsebær
1
0
Vandmelon
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION