CodeGym /Blog Java /Aleatoriu /Vechiul nivel 09
John Squirrels
Nivel
San Francisco

Vechiul nivel 09

Publicat în grup

Cunoștințe vs. Abilități

Vechiul nivel 09 - 1Facultatea ne-a învățat că nu există o mare diferență între teorie și practică. Ei bine, sigur înțelegeți că nu este același lucru. Dar nu vezi diferența de bază. Totuși, există unul. Majoritatea oamenilor pun semnul egalității între „știu” și „pot”. Tu? Ce zici de câteva exemple?
  1. Știu că fumatul este rău pentru mine, dar fumez.
  2. Știu că fast-food-ul este rău pentru mine, dar îl mănânc.
  3. Cunosc regulile de circulație, dar nu pot conduce.
  4. Știu că jogging-ul este bun pentru mine, dar nu fac jogging dimineața.
Se întâmplă adesea ca oamenii să ia „Știu” pentru „Pot”. Este un bun exemplu cu regulile de circulație. Dacă o persoană cunoaște regulamentele și știe cum să conducă, înseamnă că poate conduce? Nu. Dacă crede că știe să conducă? Deci, de ce ar avea nevoie de un instructor – el știe deja totul. Când ești sigur că știi deja totul, probabil că nu vei învăța nimic nou. Și dacă ești sigur că știi să faci totul, nu vei studia. Un astfel de gând nici nu-ți va trece prin minte. Și asta înseamnă că vei pierde toate oportunitățile minunate de a învăța ceva. Facultatea obișnuită îți oferă doar cunoștințe; va trebui să dobândești abilități pe cont propriu. Dar ce aud? Ai făcut practică în afară de teorie în facultate? Ok, dacă ai studiat la Facultatea de Fizică, realizați un model de lucru al unui motor cu abur cu o eficiență de cel puțin 20%. Pun pariu că știi cum să o faci, dar de fapt nu vei putea să o faci, nu-i așa? Ești chimist ? Faceți pulbere fără fum. Știi cum, dar nu poți, nu? Matematician, tu? Calculați traiectoria unui obuz de artilerie. Nu uitați să țineți cont de forma cochiliei. Punctele matematice nu zboară în viața reală. Și nu există cai sferici. Vechiul nivel 09 - 2Biolog? Izolați penicilina. Acest mucegai crește pe pepeni, așa că știi. Știi cum – minunat! Poți să o faci? Economist?Faceți o prognoză de creștere a prețului petrolului. Terminat? Și acum transformați-l în 2.000 de dolari sau 200.000 de dolari pe an, în funcție de prognoza dvs. Ai jucat vreodată pe FOREX? Pentru bani reali? Sau doar știi ce este? Economii internationale? Splendid! Unde deschid o companie offshore? În Hong-Cong, Irlanda sau SUA. De ce? Chiar dacă știi asta, ceea ce este îndoielnic, cu greu vei putea să o faci, din moment ce nu ai făcut-o niciodată. Nici măcar nu ai nici cea mai mică idee cum să o faci. Oh, nu ai studiat asta la facultate? Ce drept am să-ți dau sarcini pentru care nu ești pregătit? Pentru că acestea sunt sarcinile vieții reale. Această practică IS , tot ce ai studiat la facultate este: cai sferici, competiție perfectă – nimic nu există în viața reală. Dar de ce am uitat să menționezspecialist în marketing ? Care este cel mai bun mod de a-mi cheltui 500 USD, astfel încât cât mai mulți oameni să știe despre prelegerile mele? La publicitate? Ești conștient că nu doar publicitatea clasică este deja depășită, ci și conceptul de USP (unique selling proposition), pe care sunt sigur că ai fost predat în facultate ca un panaceu aproape unic. Uită că știi ceva. Întrebați-vă - ce pot face? Util, vreau să spun? Ceva pentru ce ar plăti oamenii? Bani buni, adică? Așadar, prieteni, să ne exprimăm recunoștința față de un curs atât de minunat precum CodeGym. Datorită acesteia, nu numai că veți ști cum să programați, dar veți putea de fapt să o faceți. De asemenea, vei putea să obții un loc de muncă și să câștigi bani buni în câțiva ani. Sper că acești bani vor fi suficienți pentru a trăi frumos și confortabil. O voi spune încă o dată, ca să-ți amintești: nu contează ce știi. Singurul lucru care contează este ce abilități utile aveți, cele pe care oamenii ar fi dornici să vă plătească. Cu cât înțelegi mai repede asta, cu atât mai bine.

Ai atins un nou nivel

Nivelul 9

Vechiul nivel 09 - 3

1 Risha, Stack trace

Vechiul nivel 09 - 4- Hei! Astăzi vă voi spune care este următorul stivă. Dar mai întâi permiteți-mi să vă explic ce este stiva. - Imaginați-vă un teanc de hârtii - sarcini pentru un anumit funcționar. O nouă misiune poate fi pusă în partea de sus a stivei, iar el va lua o misiune din partea de sus a stivei. Astfel, sarcinile se vor face nu pe primul venit. De fiecare dată când funcționarul preia misiunea care vine ultima. O astfel de structură de colecție se numește stivă . - În Java, există o colecție specială - Stack. Această colecție are metode „adăugați un element” și „luați (luați/luați) un element”. După cum știți deja, ultimul element adăugat va fi luat primul. - Zumzet. Nu e greu, cred. - Bine. Atunci permiteți-mi să explic ce o urmă de stivăeste. - Imaginează-ți că în Java funcția А apelează funcția B , iar cea din urmă apelează funcția C , care, la rândul ei, numește funcția D . Deci, pentru a ieși din funcția B , trebuie mai întâi să părăsiți funcția C , iar pentru a face acest lucru trebuie să părăsiți funcția D. Aceasta este foarte asemănătoare cu o stivă. - Și care este asemănarea? - În stivă, pentru a ajunge la o anumită misiune, trebuie să completezi și toate sarcinile puse deasupra. - Ei bine, este un fel de analogie, dar nu sunt sigur dacă înțeleg totul bine. - Uite aici. În Java, o stivă este un set de elemente. Este ca niște foi de hârtie într-un teanc. Pentru a lua a treia de sus, trebuie să iei a doua foaie, dar înainte de asta trebuie să o iei pe prima. Poți oricând să pui și să iei foi, dar poți să le pui doar deasupra și să iei doar de sus. Același lucru este valabil și pentru apelul de funcție. Funcția A apelează funcția B , aceasta din urmă apelează funcția C. Pentru a ieși din А , trebuie mai întâi să ieșiți din B și pentru a face acest lucru trebuie să ieșiți din C. - Așteptaţi un minut. Dacă am înțeles bine, întregul teanc iese în „doar ultima foaie care a fost pusă pe teanc poate fi luată” și „mai întâi, ultima funcție apelată ar trebui să iasă”. Chiar așa? - Da. Deci, secvența apelurilor de funcție este „stiva de apeluri de funcție” sau pur și simplu „stiva de apeluri”. Funcția numită ultima trebuie terminată mai întâi. Să ne uităm la exemplu: Vechiul nivel 09 - 5- OK. Totul este clar cu apelul de funcție, cred. Dar ce este acest StackTraceElement ? - Mașina virtuală Java înregistrează toate apelurile de funcții. În acest scop are o colecție specială - stiva. Când o funcție o apelează pe alta, JVM plasează un nou element StackTraceElement în această stivă. Când funcția se termină, elementul este șters din stivă. Astfel, această stivă stochează întotdeauna informații actualizate despre starea curentă a „stivei de apeluri de funcție”. - Fiecare StackTraceElementconține informații despre metoda numită. Deci, puteți obține numele acestei metode folosind getMethodName . - Exemplul de mai sus o arată:
  1. Obțineți „stiva de apeluri”:
  2. Repetați matricea folosind bucla for-each . Sper că nu l-ai uitat.
  3. Imprimați numele metodelor în System.out .
- Un lucru interesant și aparent ușor. Mulțumesc, Risha!

2 Diego, Task on stack trace display

- Hei, Amigo! Iată o mică sarcină pentru a afișa pe ecran o urmă de stivă.
Sarcini
1 Fiecare metodă ar trebui să returneze StackTrace
Write cinci metode care se apelează reciproc. Fiecare metodă ar trebui să returneze StackTrace-ul său.
2 StackTrace din nou
Scrieți cinci metode care se apelează reciproc. Fiecare metodă ar trebui să returneze numele metodei apelantului. Puteți obține metoda apelantului folosind StackTrace.
3 Metoda ar trebui să returneze numărul de linie al codului din care a fost apelată această metodă.
Scrieți cinci metode care se apelează reciproc. Fiecare metodă ar trebui să returneze numărul de linie al codului de la care a fost apelată această metodă. Utilizați funcția element.getLineNumber() .
4 Urmărirea stivei de 10 apeluri
Scrieți codul pentru a obține o urmărire a stivei de 10 apeluri.
5 Metoda ar trebui să returneze un rezultat - adâncimea de urmărire a stivei.
Scrieți o metodă care afișează și returnează adâncimea de urmărire a stivei. Adâncimea urmei stivei este numărul metodelor sale (numărul de elemente din listă).

3 Elly, Erori și excepții

- Hei, Amigo! Astăzi avem o lecție foarte interesantă. Vă spun despre excepții. Excepția este un mecanism special de control al erorilor din program. Iată câteva exemple de erori care pot apărea în program:
  1. Programul încearcă să scrie un fișier pe discul complet.
  2. Programul încearcă să apeleze o metodă a unei variabile care stochează referința nulă.
  3. Programul încearcă să împartă un număr la 0.
Aceste acțiuni duc la o eroare. De obicei, acest lucru duce la închiderea unui program - nu are rost să continuați executarea codului. - De ce este asta? - Are vreun sens să răsuci volanul când mașina cade de pe stâncă? - Vrei să spui că programul ar trebui să se încheie? - Da. Așa era înainte. Orice eroare a dus la terminarea unui program. - Este o decizie foarte inteligentă. - Nu ar fi mai bine să încerci să lucrezi? - Da. Ați introdus un text uriaș în MS Word, l-ați salvat, nu a fost salvat, dar programul vă spune că totul este în regulă. Și continui să tastezi. Aiurea, nu-i așa? - Da. - Apoi programatorii au venit cu o mișcare interesantă:fiecare funcție a returnat statutul lucrării sale. 0 însemna că funcția a funcționat așa cum trebuia, orice altă valoare – că a existat o eroare : această valoare era un cod de eroare. - Dar această abordare avea un dezavantaj. După fiecare apel de funcție (!) trebuia să verificați codul (numărul) returnat de funcție. În primul rând, a fost incomod: codul de tratare a erorilor era rar executat, dar trebuia întotdeauna să îl scrieți. În al doilea rând, funcțiile în sine returnează adesea valori diferite - ce să faci cu ele? - Da. Asta aveam de gând să întreb. - Apoi a venit un viitor strălucit - au apărut excepții și gestionarea erorilor. Iată cum funcționează:
  1. Când apare o eroare, mașina virtuală Java creează un obiect special – o excepție – care conține toate informațiile despre eroare. Pentru diferite erori există diferite excepții.
  2. Apoi, această excepție obligă programul să întrerupă imediat funcția curentă și următoarea funcție, până când iese din metoda principală. După aceea, programul se încheie. Dezvoltatorii Java numesc acest proces „retroduce stiva de apeluri”.
- Dar ați spus că programul nu va ieși cu siguranță. - Așa este, pentru că există o modalitate de a prinde excepția. Oricând și oriunde aveți nevoie, puteți scrie un cod special pentru a prinde aceste excepții și pentru a face ceva important. - Pentru a face asta, există o construcție specială try-catch . Uite cum funcționează: Vechiul nivel 09 - 6- De ce «După apelarea metodei1. Nu va fi afișat niciodată» nu va fi afișat pe ecran? - Mă bucur că ai întrebat despre asta. În linia 25, există o împărțire la zero. Acest lucru duce la o eroare - o excepție. Mașina virtuală Java a creat obiectul ArithmeticException care conține informațiile despre eroare. Acest obiect este o excepție. - A apărut o excepție în cadrul metodei method1() .Acest lucru a dus la încetarea imediată a metodei. Ar duce, de asemenea, la terminarea metodei main , dacă nu ar exista un bloc try-catch . - Dacă apare o excepție în interiorul blocului try, aceasta va fi prinsă în blocul catch . Restul codului din încercarea blocului nu va fi executat, execuția blocului catch va începe imediat. - Nu prea înțeleg. - Cu alte cuvinte, acest cod funcționează astfel:
  1. Dacă apare o excepție în interiorul blocului try , codul din acest bloc nu mai este executat, dar începe execuția blocului catch .
  2. Dacă nu a apărut nicio excepție, blocul try este executat până la sfârșit și catch nu este niciodată executat .
- Ahem! - Imaginează-ți că după fiecare apel de metodă verificăm dacă metoda apelată s-a terminat de la sine sau din cauza unei excepții. Dacă a existat o excepție, JVM începe să execute blocarea catch dacă este disponibilă și prinde o excepție. Dacă nu există un bloc catch, JVM încheie metoda curentă. Apoi începe aceeași verificare în metoda care a numit metoda curentă. - Acum cred că am înțeles. - Asta e bine. - Și ce este excepția din interiorul blocului de captură? - Toate excepțiile sunt clase moștenite din clasa Exception. Putem prinde oricare dintre ele specificând clasa sa în catchbloc, sau toate simultan prin specificarea unei clase părinte comune Excepție. Apoi, din variabila e (aceasta variabilă stochează referința unui obiect excepție) puteți obține toate informațiile necesare despre eroare. - Grozav! Și dacă în metoda mea apar diferite excepții, pot să le gestionez în moduri diferite? - Va trebui să. Puteți face asta astfel: Vechiul nivel 09 - 7- Blocul try poate conține mai multe blocuri catch , fiecare dintre ele va prinde excepții de tipul său. - Umph. Ei bine, am cam înțeles. Desigur, nu voi scrie eu însumi așa ceva. Cu toate acestea, nu mă voi speria dacă îndeplinesc un astfel de cod.

4 Elly, RuntimeException, aruncă

Vechiul nivel 09 - 8- Am decis să aduc un alt subiect astăzi. În Java, toate excepțiile sunt împărțite în două tipuri – controlate/verificate și necontrolate/neverificate . Excepțiile verificate trebuie să fie capturate, nebifate pot fi capturate, dar acest lucru nu este necesar . - Este posibil să aruncați excepții într-un cod intenționat? - În codul dvs., puteți arunca singuri excepții. Puteți chiar să scrieți propriile excepții. Dar ne vom adânci în această gaură mai târziu. Acum să învățăm cum să lucrăm cu excepțiile aruncate de mașina virtuală Java. - BINE. - Dacă sunt excepții ClassNotFoundException și FileNotFoundExceptionsunt aruncate (apar) într-o metodă, programatorul trebuie să le specifice în semnătura unei metode (antetul metodei). Astfel de excepții sunt verificate. Așa arată de obicei: Vechiul nivel 09 - 9- Deci, scriem doar aruncări și listăm excepțiile separate prin virgule. Dreapta? Chiar așa? - Da. Dar mai este un lucru interesant. Pentru ca exemplul de mai jos a fost compilat, metoda care apelează method1() trebuie fie să prindă aceste excepții , fie să le arunce înainte. Dacă doriți să aruncați excepția bifată înainte, trebuie să o specificați în antetul metodei . - Încă o dată, dacă în metoda principală , doriți să apelați o metodă care are în fraza de antet FileNotFoundException , ...atunci trebuie să faci unul dintre aceste două lucruri:
  1. pentru a captura excepții FileNotFoundException, ...
    Va trebui să înfășurați codul în cazul în care apelați o metodă periculoasă cu un bloc try-catch
  2. pentru a nu prinde excepții FileNotFoundException,...
Va trebui să adăugați aceste excepții la lista de aruncări a metodei main . - Îmi dai un exemplu? - Uită-te aici: Vechiul nivel 09 - 10- Acest exemplu nu va fi compilat, deoarece metoda principal apelează metoda method1(), care aruncă excepții care trebuie să fie capturate. - Pentru ca exemplul să fie compilat, trebuie să adăugați gestionarea excepțiilor la metoda main . Puteți face acest lucru în două moduri: Vechiul nivel 09 - 11- Și aici îl prindem folosind try-catch : Vechiul nivel 09 - 12- Devine mai clar, dar foarte puțin. - Priviți exemplul de mai jos: Vechiul nivel 09 - 13- Există totuși o excepție – RuntimeException și clasele moștenite de la aceasta.Nu este obligatoriu să le prinzi sau să le arunci. Acestea sunt excepții necontrolate. Aceste excepții sunt considerate greu de prezis, așa că este aproape imposibil să se prezică apariția lor. Puteți face aceleași lucruri cu ele, dar nu este nevoie să le specificați în aruncări .

5 Risha, Rolling the call stack, cum se face în excepții

- Aș dori să vă spun puțin mai multe despre cum funcționează excepțiile. Exemplul de mai jos explică faptul că: Vechiul nivel 09 - 14- Nu înțeleg. - Bine. O să explic ce se întâmplă. - În exemplul din stânga, numim mai multe metode în ordinea lanțului. În method2() creăm și lansăm în mod specific o excepție (pentru a iniția o eroare). - Exemplul din dreapta arată ce se întâmplă. Uită-te la metoda2() . În asta se transformă crearea unei excepții: creăm un obiect de tip RuntimeException , îl stocăm într-o excepție variabilă specială și ieșim imediat din metodă – return . - În metoda 1 , după apelul metodei 2 există o verificare,dacă există sau nu o excepție; dacă există o excepție, metoda 1 se încheie imediat. Această verificare se face implicit după apelarea fiecărei metode Java (!). - Wow! - Exact. - În coloana din dreapta a metodei main am scris ce se întâmplă când o excepție este prinsă de blocul try-catch . Dacă nu a existat nicio excepție, codul continuă să se execute așa cum era planificat. Dacă a existat o excepție de tipul specificat în catch , atunci o gestionăm. - Și ce înseamnă aruncare și instanță ? - Uitați-vă la ultima linie din stânga, aruncați noi RuntimeException(e). În acest fel creăm și aruncăm o excepție. Acesta este doar un exemplu. Nu o vom face până acum. - Folosind comanda « а instanceof B » din blocul din dreapta verificăm dacă obiectul a are tipul B . Adică, dacă obiectul stocat în excepția variabilei, are tipul RuntimeException . Este o expresie logică. - Ei bine, devine un pic mai clar.

6 Diego, sarcină de prindere excepție

- Uite aici! Unchiul Diego ți-a adus câteva sarcini de prindere. Iti doresc noroc. Cred că vei avea nevoie. Heh. Vechiul nivel 09 - 15- Hei, Amigo! Iată câteva sarcini interesante de capturare a excepțiilor.
Prinderea sarcinilor
1 1. Excepție la operarea cu numere
Prindeți excepția care apare la rularea codului:
int a = 42 / 0;
Afișați excepția de pe ecran, specificând tipul acesteia
2 2. Excepție la operarea cu șiruri de caractere
Prindeți excepția care apare la rularea codului:
String s = null;
String m = s.toLowerCase();
Afișați excepția de pe ecran, specificând tipul acesteia.
3 3. Excepție atunci când se operează cu tablouri
Prindeți excepția care apare când rulați codul:
int[] m = new int[2];
m[8] = 5;
Afișați excepția de pe ecran, specificând tipul acesteia.
4 4. Excepție când se operează cu colecții Listă
Prindeți excepția care apare la rularea codului:
ArrayList<String> list = new ArrayList<String>();
String s = list.get(18);
Afișați excepția de pe ecran, specificând tipul acesteia.
5 5. Excepție la operarea cu colecții de hărți
Prindeți excepția care apare la rularea codului:
HashMap<String, String> map = new HashMap<String, String>(null);
map.put(null, null);
map.remove(null);
Afișați excepția de pe ecran, specificând tipul acesteia.
- Sfat: mai întâi scrieți un program, apoi vedeți ce excepție apare și după aceea schimbați codul și prindeți acea excepție.

7 Risha, Cum funcționează captura multiplă

Vechiul nivel 09 - 16- Acum, câteva prelegeri mai interesante. Îmi place atât de mult să predau. - Vreau să vă spun cum funcționează o captură multiplă . De fapt, este foarte simplu: când apare o excepție în blocul try , execuția programului este transferată la prima captură . - Dacă tipul specificat în paranteze al blocului catch este același cu tipul obiectului-excepție, atunci execuția codului începe în interiorul {}. Altfel trecem la următoarea captură . Verificarea se repetă acolo. - Dacă nu mai există blocuri de captură , dar excepția nu a fost prinsă, este aruncată înainte, iar metoda curentă este întreruptă. - Înțeleg. Acea captură va fi executată, al cărei tip se potrivește cu tipul de excepție. - Da intr-adevar. De fapt, este puțin mai complicat: Ideea este că clasele pot fi moștenite unele de la altele. Dacă clasa «Vacă» este moștenită din clasa «Animal», obiectul de tip «Vacă» poate fi stocat nu numai într-o variabilă de tip «Vacă», ci și într-o variabilă de tip «Animal» . - Şi ce dacă? - Deoarece toate excepțiile sunt moștenite din clasele Exception sau RuntimeException (care este, de asemenea, moștenită din Exception ), toate pot fi prinse folosind comenzile catch (Exception e) sau catch (RuntimeException e) . - Şi ce dacă? - Aceasta înseamnă că,mai întâi, puteți prinde orice excepție folosind comanda catch(Exception e) . În al doilea rând, ordinea blocurilor de captură contează. Exemple: - Excepția aritmetică rezultată din împărțirea la 0 este prinsă în a doua captură. Vechiul nivel 09 - 17- În exemplul de mai jos, ArithmeticException este prinsă în prima captură , deoarece clasele tuturor excepțiilor sunt moștenite de la Exception. Deci, Exception prinde orice excepție . Vechiul nivel 09 - 18- În exemplul de mai jos, excepția ArithmeticException nu este prinsă, ci aruncată înainte către metoda de apelare. Vechiul nivel 09 - 19- Ei bine, acum devine mai clar. Aceste excepții nu sunt atât de ușoare. - Doar așa pare. De fapt, este unul dintre cele mai simple lucruri din Java. - Mă îndoiesc dacă să fiu mulțumit sau supărat de asta...

8 Diego, Sarcini de capturare a excepțiilor multiple

- Hei, Amigo! Ieri m-am îmbătat și ți-am complicat sarcinile, dar sper că nu există dureri din partea ta și le vei rezolva pe toate? E pentru binele tău. Aici:
Sarcini
1 1. Excepții
Există o metodă care aruncă două excepții moștenite de la Exception și celelalte două moștenite de la RuntimeException : NullPointerException , ArithmeticException , FileNotFoundException și URISyntaxException .

Trebuie să capturați NullPointerException și FileNotFoundException , dar nu să capturați ArithmeticException și URISyntaxException . Cum să o facă?
2 2. Captarea excepțiilor
Există trei excepții moștenite secvențial de la Exception :
clasa Exception1 extinde Exception
class Exception2 extinde Exception1
clasa Exception3 extinde Exception2
Există o metodă, care este descrisă după cum urmează:
public static void method1() aruncă Exception1, Exception2, Exception3

Scrieți o captură bloc pentru a prinde toate cele trei Exception1 , Exception2 si Exception3
3 3. Prinderea excepțiilor selective
1. Aflați ce excepții sunt aruncate de metoda BEAN.methodThrowExceptions .
2. Metoda processExceptions() ar trebui să apeleze metoda BEAN.methodThrowExceptions și să gestioneze excepțiile:
2.1. dacă apare o excepție FileSystemException , atunci înregistrați-o apelând metoda BEAN.log și aruncați înainte
2.2. dacă apare o excepție CharConversionException sau orice altă IOException , doar înregistrați-o apelând metoda BEAN.log
3. Adăugați clasa/tipul excepției pe care o redirecționați în 2.1. la procesExcepții()semnătura metodei.
4. Gestionați excepția rămasă în metoda main() și înregistrați-o. Utilizați try..catch

Sfat:
Dacă ați prins excepția MyException , pe care nu ați vrut să o capturați, o puteți arunca înainte folosind următorul cod:
catch (MyException e) {
throw e;
}
4 4. Captarea excepțiilor verificate
Gestionați toate excepțiile verificate în metoda processExceptions() .
Trebuie să afișați pe ecran fiecare excepție verificată care a apărut.
Puteți folosi o singură încercare de bloc .
5 5. Captarea excepțiilor neverificate
Gestionați toate excepțiile neverificate în metoda processExceptions() .
Trebuie să afișați pe ecran o urmă de stivă a fiecărei excepții apărute folosind metoda printStack() .
Puteți folosi o singură încercare de bloc .

9 Profesor, Prelegere despre excepții

- Astăzi avem un subiect super-interesant - excepțiile. La acea vreme, când tinerii oameni de știință și programatori erau profund încântați de acest subiect... - Îmi pare rău, trebuie să merg la laborator. Iată note de curs. Cred că o să-ți dai seama singur. Aici: Excepții Java (documentația Oracle) Gestionarea excepțiilor în Java (punct Java T) Java - Gestionarea excepțiilor (punctul tutorialelor) Gestionarea de bază a excepțiilor Java

10 iulie

- Amigo, ce părere ai despre lecția de azi? Creierul tău cu pozitroni nu a funcționat încă? Sarcinile lui Diego sunt suficiente pentru a epuiza pe oricine. Să avem un moment de bere și să ne relaxăm. Mai stai in picioare?

11 Căpitan Veverițe

- Bună, soldat! - Buna dimineata domnule! - Am niște vești minunate pentru tine. Iată o verificare rapidă pentru a vă consolida abilitățile. Fă-o în fiecare zi și îți vei îmbunătăți abilitățile foarte repede. Sarcinile sunt special concepute pentru a fi realizate în Intellij IDEA.
Sarcini suplimentare de făcut în Intellij Idea
1 1. Împărțirea la zero
Creați o metodă public static void divisionByZero() , în care trebuie să împărțiți orice număr la zero și să afișați pe ecran rezultatul împărțirii.
Încheiați apelul metodei divisionByZero() într-un try..catch . Afișați pe ecran urmărirea stivei de excepții folosind metoda exception.printStackTrace() .
2 2. Numărătoare inversă de la 10 la 0
Scrieți o buclă la numărătoarea inversă de la 10 la 0. Folosiți Thread.sleep(100) pentru a face o întârziere;
Încheiați apelul de somn într-o încercare..prindere .
3 3. Înfășurați o metodă într-un try..catch
Citiți numere de la tastatură. Scrieți un cod pentru citirea numerelor de la tastatură într-o metodă separată readData() .
Înfășurați întregul corp al acestei metode (întregul cod din metoda readData() , cu excepția declarației listei în care vor fi stocate numerele) într-un try..catch .

Dacă utilizatorul introduce un text în loc să introducă un număr, metoda trebuie să prindă excepția și să afișeze pe ecran toate numerele introduse anterior.
Afișați numerele pe ecran. Fiecare număr ar trebui să fie pe o linie nouă. Ordinea numerelor ar trebui să fie așa cum a fost în introducere.
4 4. Convertor de date
Citiți de la tastatură o dată în formatul «18/08/2013»
Afișați pe ecran acea dată sub forma «18 AUG 2013».
Utilizați obiectele Date și SimpleDateFormat .
5 5. Vocale și consoane
Scrieți un program care citește linia de la tastatură.
Programul ar trebui să afișeze pe ecran două șiruri:
1) primul șir trebuie să conțină vocale
2) al doilea șir trebuie să conțină consoane și caractere de punctuație din textul introdus.
Separați caracterele prin spații.

Exemplu de intrare:
Stop look listen
Exemplu de ieșire:
oooie
stplklstn
6 6. Povestea Scufiței Roșii
1. Sunt cinci clase: Scufița Roșie, bunica, chiflă, tăietor de lemne, lup.
2. Fiecare clasă are două câmpuri de tip ArrayList : killed și ate.
3. Sunt deja create obiectele necesare (glugă, bunica, ...).
4. Creați relația corectă (cine a mâncat și a ucis pe cine) pentru a obține logica „Scufiței Roșii”.
7 7. Mutare static modifică
Mutare modificatori statici astfel încât codul să fie compilat.
8 8. Listă de tablouri de numere
Creați o listă ale cărei elemente sunt tablouri de numere. Adăugați la listă cinci matrice de obiecte cu lungimea de 5, 2, 4, 7, respectiv 0. Umpleți matricele cu orice date și afișați-le pe ecran.
9 9. Zece pisici
Creați o clasă Cat cu un câmp String name .
Creați un dicționar Hartă<String, Cat> , adăugați 10 pisici pe modelul «Name» - «Cat».
Obțineți de pe hartă un set de nume și afișați setul pe ecran.
- Acele sarcini au fost pentru verzi. Am adăugat sarcini bonus de complexitate mai mare. Numai pentru armele de top.
Sarcini bonus
1 1. Programul nu se compila si nu ruleaza. Repara-l.
Sarcină: Programul ar trebui să citească de la tastatură două nume de fișiere și să copieze primul fișier în locația specificată de al doilea nume.
2 2. Adăugați o nouă funcționalitate la program.
Sarcină veche: Programul ar trebui să citească de la tastatură două nume de fișiere și să copieze primul fișier în locația specificată de al doilea nume.
Sarcină nouă: Programul ar trebui să citească de la tastatură două nume de fișiere și să copieze primul fișier în locația specificată de al doilea nume.

Dacă fișierul (care urmează să fie copiat) cu numele specificat nu există, programul ar trebui să afișeze pe ecran mesajul „Fișierul nu există” și să încerce să citească din nou numele fișierului de pe consolă înainte de a citi numele celui de-al doilea fișier (destinație).
3 3. Învățarea și exersarea algoritmului.
Citiți de la tastatură lista de cuvinte și numere. Afișați pe ecran cuvintele în ordine crescătoare și numerele în ordine descrescătoare.

Exemplu de intrare:
cireș
1
fasole
3
măr
2
0
pepene verde

Exemplu de ieșire:
măr
3
fasole
2
cireș
1
0
pepene verde
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION