Recitation 4. 2-D arrays. Exceptions

Relevanta dokument
Att skriva till och läsa från terminalfönstret

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Support Manual HoistLocatel Electronic Locks

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Lösningsförslag FYTA11 Javaprogrammering

c = s[2]; /* move chars around */ p = &s[2]; *p = *(p-1); --p; *p = *(p-1); s[0] = c; printf("%s\n",s); /* print the string */ English version

Föreläsning 3. Stack

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Outline. Objektorienterad Programmering (TDDC77) Lösningen heter Collection. Collection gränsnittet. Collection. Iterable. Ahmed Rezine.

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Styrteknik: Binära tal, talsystem och koder D3:1

endast har ett korrekt alternativ. Om

Fördjupad Java. Undantagshantering. Fel

Discovering!!!!! Swedish ÅÄÖ. EPISODE 6 Norrlänningar and numbers Misi.se

Föreläsning 3. Stack

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista


Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Språkkonventioner och redigering av tal.

LULEÅ TEKNISKA UNIVERSITET

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

OOP Objekt-orienterad programmering

Objektorienterad Programmering (TDDC77)

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

List.java. List.java. Printed by Tom Smedsaas

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Workplan Food. Spring term 2016 Year 7. Name:

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Grafisk teknik IMCDP IMCDP IMCDP. IMCDP(filter) Sasan Gooran (HT 2006) Assumptions:

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Webbregistrering pa kurs och termin

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

PROGRAMMERING-Java Omtentamina

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

Isometries of the plane

Preschool Kindergarten

Felhantering. Andra brott mot språkets regler. Man kan också i programmet bryta mot ett antal olika regler som gäller. Exempelvis:

samhälle Susanna Öhman

Föreläsnings 9 - Exceptions, I/O

Testning och felhantering

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

Writing with context. Att skriva med sammanhang

Grafisk teknik IMCDP. Sasan Gooran (HT 2006) Assumptions:

Isolda Purchase - EDI

Objektorienterad programmering

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

Webbreg öppen: 26/ /

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Chapter 4: Writing Classes/ Att skriva egna klasser.

12.6 Heat equation, Wave equation

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

F4. programmeringsteknik och Matlab

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Grafisk teknik. Sasan Gooran (HT 2006)

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Föreläsning 3: Booleans, if, switch

Concurrency Saker händer samtidigt. Process En instans av ett program

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

Föreläsning 8: Exempel och problemlösning

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Tentamen. Lösningsförslag

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

Obligatorisk uppgift: Numerisk kalkylator

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Obligatorisk uppgift: Numerisk kalkylator

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

Exempelsamling Assemblerprogrammering

Par m 328 feet. Lång höger sväng. Korgen står placerad i en skogsglänta OB-linje på vänster sida.

BST implementering, huvudstruktur

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Exempel på uppgifter från 2010, 2011 och 2012 års ämnesprov i matematik för årskurs 3. Engelsk version

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

Tentamen Programmering fortsättningskurs DIT950

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Make a speech. How to make the perfect speech. söndag 6 oktober 13

Transkript:

Recitation 4. 2-D arrays. Exceptions

Animal[] v= new Animal[3]; 2 declaration of array v Create array of 3 elements v null a6 Assign value of new-exp to v Assign and refer to elements as usual: v[0]= new Animal( ); a= v[0].getage(); 0 1 2 a6 null null null Animal[] v.length is the size of the array (Review: showed this in Lecture 6)

Array initializers Instead of int[] c= new int[5]; c[0]= 5; c[1]= 4; c[2]= 7; c[3]= 6; c[4]= 5; Use an array initializer: int[] c= new int[ ] {5, 4, 7, 6, 5; a0 5 4 7 6 5 No expression between brackets [ ]. array initializer: gives values to be in the array initially. Values must have the same type, in this case, int. Length of array is number of values in the list 3

Two-dimensional arrays int[] c= new int[5]; int[][] d= new int[5, 8]; int[][] d= new int[5][8]; c is a 1-dimensional array You would think this gives an array/ table with 5 rows and 8 columns. BUT Java does it differently Java does it like this d.length number of rows (5) d[0].length number of columns in row 0 (8) d[1].length number of columns in row 1 (8) d[2][0]= 6; Store 6 in element d[2][0].

Java has only 1-dimensional arrays whose elements can be arrays int[][] b; Declare variable b of type int[][] b= new int[2][] Create a 1-D array of length 2 and store its name in b. Its elements have type int[] (and start as null). In Java, there are really only 1-dimensional arrays, whose elements can be arrays! b a0 0 1 a0 null null int[][] int[][] 5

Ragged arrays: rows have different lengths int[][] b; Declare variable b of type int[][] b= new int[2][] Create a 1-D array of length 2 and store its name in b. Its elements have type int[] (and start as null). b[0]= new int[] {17, 13, 19; Create int array, store its name in b[0]. b[1]= new int[] {28, 95; Create int array, store its name in b[1]. r0 r1 b a0 0 a0 r0 0 1 17 13 0 1 28 95 1 r1 2 19 6

Exceptions public static void main(string[] args) { int b= 3/0; This is line 7 Division by 0 causes an Exception to be thrown. program stops with output: Exception in thread "main" java.lang.arithmeticexception: / by zero at C.main(C.java:7) Happened in main, line 7 The Exception that is thrown

parseint throws a NumberFormatException /** Parse s as a signed decimal integer and return the integer. If s does not contain a signed decimal integer, throw a NumberFormatException. */ public static int parseint(string s) parseint, when it find an error, does not know what caused the error and hence cannot do anything intelligent about it. So it throws the exception to the calling method. The normal execution sequence stops! See next slide public static void main(string[] args) { code to store a string in s expected to be an int int b= Integer.parseInt(s);

parseint throws a NumberFormatException public static void main(string[] args) { int b= Integer.parseInt( 3.2 ); Output is: 3.2 not an int Exception in thread "main" java.lang.numberformatexception: For input string: "3.2" at java.lang.numberformatexception.forinputstring(numberformatexception.java:48) at java.lang.integer.parseint(integer.java:458) at java.lang.integer.parseint(integer.java:499) at C.main(C.java:6) called from C.main, line 6 called from line 499 Found error on line 458 We see stack of calls that are not completed!

Exceptions and Errors In Java, there is a class Throwable: Throwable@x1 detailmessage getmessage() Throwable() Throwable(String) / by zero When some kind of error occurs, an Exception is thrown you ll see what this means later. An Exception is an instance of class Throwable (or one of its subclasses) Two constructors in class Throwable. Second one stores its String parameter in field detailmessage.

Exceptions and Errors So many different kind of exceptions that we have to organize them. Throwable@x1 Throwable Do nothing with these Throwable() Throwable(String) detailmessage getmessage() Exc () Exc (..) / by zero Exception RuntimeException RunTimeE () RunTimeE ( ) ArithmeticException Arith E () Arith E ( ) Exception RuntimeException ArithmeticException Error You can "handle" these Subclass: 2 constructors, no other methods, no fields. Constructor calls superclass constructor

Creating and throwing and Exception Class: Call Ex.main(); Output ArithmeticException: / by zero at Ex.third(Ex.java:13) at Ex.second(Ex.java:9) at Ex.main(Ex.java:5) 03 public class Ex { 04 public static void main( ) { 05 second(); a0 06 AE 07 08 public static void second() { 09 third(); a0 10 AE 11 12 public static void third() { 13 int x= 5 / 0; a0 14 AE 15 at sun.reflect.nativemethodaccessorimpl.invoke0(native Method) at sun.reflect.nativemethodaccessorimpl.invoke( ) at sun.reflect.delegatingmethodaccessorimpl.invoke( ) at java.lang.reflect.method.invoke(method.java:585)

throw statement Class: Call Output public class Ex { public static void main( ) { second(); a0 AE public static void second() { third(); a0 AE Ex.main(); ArithmeticException: I threw it at Ex.third(Ex.java:14) at Ex.second(Ex.java:9) at Ex.main(Ex.java:5) public static void third() { throw new ArithmeticException("I threw it"); a0 at sun.reflect.nativemethodaccessorimpl.invoke0(native Method) at sun.reflect.nativemethodaccessorimpl.invoke( ) at sun.reflect.delegatingmethodaccessorimpl.invoke( ) at java.lang.reflect.method.invoke(method.java:585) AE

How to write an exception class /** An instance is an exception */ public class OurException extends Exception { /** Constructor: an instance with message m*/ public OurException(String m) { super(m); /** Constructor: an instance with no message */ public OurException() { super();

Won t compile. Needs a throws clause, see next slide If a method throws an Exception that is not a subclass of RuntimeException, the method needs a throws clause. Don t be concerned with this issue. Just write your method and, if Java says it needs a throws clause, put one in /** Illustrate exception handling */ public class Ex { public static void main() { second(); public static void second() { third(); public static void third() { throw new OurException("mine");

The throws clause /** Class to illustrate exception handling */ public class Ex { public static void main() throws OurException { second(); public static void second() throws OurException { third(); public static void third() throws OurException { throw new OurException("mine"); If Java asks for it, insert the throws clause. Otherwise, don t be concerned with it.

public class Ex1 { Try statement: catching a thrown exception public static void main() throws MyException{ try { second(); catch (MyException ae) { System.out.println ("Caught MyException: " + ae); System.out.println ("procedure first is done"); public static void second() throws MyException { third(); public static void third() throws MyException { throw new MyException( yours"); Execute the tryblock. If it finishes without throwing anything, fine. If it throws a MyException object, catch it (execute the catch block); else throw it out further.

/** Input line supposed to contain an int. (whitespace on either side OK). Read line, return the int. If line doesn t contain int, ask user again */ public static int readlineint() { String input= readstring().trim(); // inv: input contains last input line read; previous // lines did not contain a recognizable integer. while (true) { try { return Integer.valueOf(input).intValue(); catch (NumberFormatException e) { System.out.println( "Input not int. Must be an int like"); System.out.println("43 or -20. Try again: enter an int:"); input= readstring().trim(); Useful example of catching thrown object readlineint continues to read a line from keyboard until user types and integer