INF1010 våren 2018 tirsdag 23. januar

Like dokumenter
INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

INF1010 våren Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling)

INF1010 våren Arv og subklasser del 1 pluss (hvis vi har tid) litt om Unntak, IO og Scanner-klassen

INF1010 våren Arv og subklasser - del 2

INF1010 våren Generalisering -spesialisering Gjenbruk av klasser. Ved arv. Klasse-hierarkier. Stein Gjessing.

Uke 5, 27. januar Arv og subklasser del I. Stein Gjessing Institutt for informatikk

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

INF 1010, vår 2005 Løsningsforslag uke 11

INF1010 våren 2010 Torsdag 4. februar. Arv og subklasser del I. Emneoversikt subklasser (2 uker) Hva er en subklasse? Eksempel: Universitetsregister

Oversikt. Array indeks utenfor sine grenser. Feil i programmet hva skjer?

INF1010 våren Arv og subklasser del I

IN Notat om I/O i Java

INF Notat om I/O i Java

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Oversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

INF1000-SIKT - Notat om I/O i Java

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Oversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java

Enkel lesing og skriving i Java

Litt om pakker og mest om data inn og ut

Leksjon 7. Filer og unntak

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Kapittel 13: Unntakshåndtering

Repetisjon. INF gruppe 13

Videregående programmering 6

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Bruk av class Scanner, FileWriter og Formatter som alternativ til EasyIO i INF1000.

Kapittel 13: Unntakshåndtering

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Bruk av class Scanner, split(), FileWriter og Formatter som alternativ til easyio i INF1000.

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

IN-OO1-EVU Dag 3. Stein Gjessing. Kapittel 4: I/O, if og unntak (exceptions) Kapittel 5: While, switch, mer I/O Kapittel 6: Mengder av objekter

INF2100. Oppgaver 26. september til 1. oktober 2007

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Kapittel 12: Filer og strømmer INF 100. Java som første programmeringsspråk

Fra Python til Java, del 2

Å lese tall fra en fil, klassen Scanner

INF1000 : Forelesning 5

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

TOD063 Datastrukturer og algoritmer

import java.io.*; import java.util.*; import javagently.text;


D Feilhåndtering og unntaksklasser

Kapittel 14: Filer og strømmer. Kort versjon

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

INF1000 Behandling av tekster

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

INF Løsning på seminaropppgaver til uke 8

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

Stein Gjessing 11. nov IN-OO1-EVU Dag 3. Stein Gjessing

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Ole Christian Lingjærde, 12. september 2013

Forelesning inf Java 4

Læringsmål for forelesningen

INF1010 våren 2017 Torsdag 2. februar. Arv og subklasser - del 2

Leksjon 7. Filer og unntak

IN1010 våren 2018 Tirsdag 6. februar. Arv og subklasser - del 2

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Jentetreff INF1000 Debugging i Java

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Seminaroppgaver IN1010, uke 2

UNIVERSITETET I OSLO

Løsningsforslag Test 2

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

UNIVERSITETET I OSLO

Post-it spørsmål fra timen (Arv og subklasser)

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

Kapittel 14: Filer og strømmer. Kort versjon

Forelesning inf Java 5

Forelesning inf Java 5

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

Forelesning inf Java 5

INF1010 våren Arv og subklasser - del 2

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1010, 21. januar Klasser med parametre = Parametriserte klasser = Generiske klasser

"Nelsons kaffebutikk"

Mer om uttrykk, terminal I/O, forgreninger. Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo

INF2100. Oppgaver 9. oktober 2012 C 100 X 10

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Løsningsforslag ukeoppg. 3: sep (INF Høst 2011)

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10

Forelesning inf Java 4

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd

Eksamen. Objektorientert Programmering IGR 1372

INF1010 våren Arv og subklasser, del 2

INF2100. Oppgaver uke 40 og

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

INF1000: Forelesning 4. Mer om arrayer Metoder

Forelesning inf Java 2

Transkript:

INF1010 våren 2018 tirsdag 23. januar I/O og litt om bruk av unntak i Java Stein Gjessing

Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(<fil>); Type: Scanner boolean hasnext() int nextint() Se Scanner i java-biblioteket F.eks. ved å google java 8 api Scanner double nextdouble(). String nextline() Objekt av klassen Scanner

Klassen Scanner Leser en og en linje eller ett og ett token Tokens er vanligvis adskilt av blanke Kan sjekke om det er flere linjer eller token igjen på fila Kan lese og konvertere token til basale typer som f.eks. int og double Bruk CNTRL-D for slutt på input fra terminal 3

Innlesing fra terminal import java.util.*; class LesFraTermNavnAlder { public static void main (String [ ] args) { int alder; String navn; Scanner mininn = new Scanner (System.in); System.out.print(" Skriv navn: "); navn = mininn.nextline(); System.out.print(" Skriv alder: "); alder = mininn.nextint(); System.out.println(" Du heter " + navn + " og er " + alder + " år" ); 4

Innlesing fra fil - feil import java.util.*; import java.io.*; class LesFraTermNavnAlder { public static void main (String [ ] args) { int alder; String navn; Scanner mininn = new Scanner (new File ("minfil.txt ) ); navn = mininn.nextline(); alder = mininn.nextint(); System.out.println(" Personen heter " + navn + " og er " + alder + " aar" ); minfil.txt Per Pettersen 21 java:8: error: unreported exception FileNotFoundException; must be caught or declared to be thrown Scanner mininn = new Scanner (new File ("minfil.txt")); ^ 1 error

Innlesing fra fil - riktig import java.util.*; import java.io.*; class LesFraTermNavnAlder throws FileNotFoundException { public static void main (String [ ] args) { int alder; String navn; Scanner mininn = new Scanner (new File ("minfil.txt ) ); navn = mininn.nextline(); alder = mininn.nextint(); System.out.println(" Personen heter " + navn + " og er " + alder + " aar" ); minfil.txt Per Pettersen 21 FileNotFoundException er dette spesielle unntaket IOException er et mer generelt unntak Exception er det mest generelle unntaket Mer når vi lærer om subklasser 6

Innlesing av heltall fra fil utskrift på skjerm main filinn boolean hasnext() import java.io.*; import java.util.*; class LesFraFil { Objekt av klassen Scanner int nextint() public static void main (String [ ] args) throws FileNotFoundException { Scanner filinn = new Scanner (new File ("minfil.txt ) ); int tall; while(filinn.hasnext()) { tall = terminalinn.nextint(); System.out.println(tall); DETTE GÅR BRA HVIS FILEN BARE INNE- HOLDER HELTALL!! Kaster IOunntak til runtimesystemet 7

import java.io.*; Utskrift til fil main filut class FilTest { public static void main (String [ ] args) throws FileNotFoundException { PrintWriter filut = new PrintWriter ( minutfil.txt ); // Utskrift skjer som til skjerm: filut.println( Utskrift + 17 ); Dette objektet skriver på filen minutfil.txt void println() minutfil.txt // For at innholdet på den nye filen skal // bevares må vi til slutt si: filut.close( ); 8

import java.io.*; Metoder som gjør filbehandling må kaste unntaket til main (etc.) class FilTestMedMetode { public static void main (String [ ] args) throws FileNotFoundException { skrivtilfil(); private static void skrivtilfil( ) throws FileNotFoundException { PrintWriter filut = new PrintWriter ( minutfil.txt ); filut.println( Meget enkel testutskrift nr. + 17 ); filut.close( );

Du kan behandle unntaket selv import java.io.*; class FilTest { public static void main (String [ ] args) throws FileNotFoundException { PrintWriter filut = new PrintWriter ( minutfil.txt ); filut.println( Utskrift + 17 ); filut.close( ); import java.io.*; class FilTest { public static void main (String [ ] args) { try { PrintWriter filut = new PrintWriter ( minutfil.txt ); filut.println( Utskrift + 17 ); filut.close( ); catch (FileNotFoundException f) { System.out.println ( Fant ikke filen ); 10

Generelt om unntak / feil - behandling i Java n Mye kode kan feile og feilaktige situasjoner (unntak) kan oppstå. n Kode som kan feile kan - og som oftest må - vi legger følgende rundt: Feiler koden blir denne blokken utført med feilobjektet som e peker på som parameter try { <... Kode som kan feile > catch (Exception e) { <... Gjør noe med feilen, prøv å rett opp...> 11

Fem reserverte Java ord n try - Står foran en blokk som er usikker dvs. der det kan oppstå et unntak n catch - Står foran en blokk som behandler et unntak. Har en peker til et unntaksobjekt som parameter n finally - blir alltid utført (mer senere) n throw - Starter å kaste et unntak (mer senere) n throws - Kaster et unntak videre Brukes i overskriften på en metode som ikke selv vil behandle et unntak n Viktigst bruk: try { <kode som kan feile> catch (Unntaksklasse u) { <behandle unntaket, u peker på et objekt som beskriver unntaket> 12

Java-bibliotekets klassehierarki for unntak Throwable Error Exception Vanskelig å gjøre noe med RuntimeException IOException VirtualMachineError IOError Må fanges NullPointerException ArithmeticException Unntak i dette subtreet bør fanges 13