Viden vs. færdigheder
![Gammelt niveau 09 - 1]()
College 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?
- Jeg ved godt, at rygning er dårligt for mig, men jeg ryger.
- Jeg ved godt, at fastfood er dårligt for mig, men jeg spiser det.
- Jeg kender færdselsreglerne, men jeg kan ikke køre.
- 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.
Biolog? 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ævne
marketing 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
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:
- 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:
- Hent «opkaldsstakken»:
- Gentag arrayet ved hjælp af loop for-each . Jeg håber ikke du har glemt det.
- 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:
- Programmet forsøger at skrive en fil til den fulde disk.
- Programmet forsøger at kalde en metode for en variabel, der gemmer nul-referencen.
- 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:
- 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.
- 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:
- 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:
- 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.
- 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:
- 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:
- for at fange undtagelser FileNotFoundException, …
Du bliver nødt til at indpakke koden, hvor du kalder en farlig metode med en try-catch- blok
- 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 :
- 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:
- 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.
- 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
|
GO TO FULL VERSION