Input. Programmering. Andra källor

Storlek: px
Starta visningen från sidan:

Download "Input. Programmering. Andra källor"

Transkript

1 Programmering hh.se/db2004 Föreläsning 13: Undantag - med exempel från input klassen Scanner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Input Standard Input Med standard input kan programmet läsa in data från tangentbordet. Och vi kan dirigera om standard input från en fil med hjälp av operativsystemet. Mål Läsa från flera indataströmmar: från standard input, från en fil, från en webbplats, från nätverket, med mera. Scanner En datatyp Scanner som kan användas för att läsa in data från olika källor. Center for Research on Embedded Systems IDE-sektionen 1 / 18 Ett enkelt exempel Har två textfiler samma innehåll? 2 / 18 Att jämföra filer import java.io.file; public class Cmp{ private static String readall(scanner in){ String all = ""; while(in.hasnextline()){ all = all + in.nextline(); return all; Scanner in0 = new Scanner(new File(cmdLn[0])); Scanner in1 = new Scanner(new File(cmdLn[1])); System.out.println(readAll(in0).equals(readAll(in1))); 3 / 18 Andra källor Man kan faktiskt skapa instanser av Scanner för att läsa in från olika källor: Från en InputStream: Scanner in = new Scanner(System.in); Från en fil: Scanner in = new Scanner(new File("data.txt"); Från en sträng: Scanner in = new Scanner(" "); Användning Enklaste användning: Indata delas upp i ord åtskilda av blanktecken och radbyten. Man kan testa om fler ord finns, om nästa ord kan ses som int, double, osv och i så fall läsa och konvertera ordet. 4 / 18

2 Mera om Scanner Delar av APIn public class java.util.scanner Scanner(String s) Scanner(File f) Scanner(InputStream in) boolean hasnext() boolean hasnextline() boolean hasnextint() boolean hasnextdouble() String next() String nextline() int nextint() double nextdouble() Ett exempel public class Stats { public static double average(scanner in) { double sum = 0; int count = 0; while (in.hasnextdouble()) { sum = sum + in.nextdouble(); count++; return sum/count; 5 / 18 6 / 18 Två klientprogram Exekveringsfel public class Client1 { Scanner in = new Scanner(" "); System.out.println("Average: " + avg); public class Client2 { Scanner in = new Scanner(System.in); 7 / 18 Vissa fel under körning av ett program upptäcks av java, som kastar ett undantag (eng. throws an exception). Programmet avbryts och ett felmeddelande skrivs ut. Det finns många olika varianter: När programmet försöker göra om en String till en int och ordet inte kan ses som ett tal! När programmet försöker komma åt ett fält på en position som inte finns för fältet. När programmet försöker dela med 0. När programmet försöker öppna en fil som inte finns. 8 / 18

3 NullPointerException public class Undantag{ private int n; private String s; public Undantag(){ n = s.length(); Undantag u = new Undantag(); stray.hh.se% java Undantag Exception in thread "main" java.lang.nullpointerexception at Undantag.<init>(Undantag.java:5) at Undantag.main(Undantag.java:11) 9 / 18 NumberFormatException int n = Integer.parseInt(cmdLn[0]); stray.hh.se% java Undantag www Exception in thread "main" java.lang.numberformatexception: For input string: "www" at java.lang.numberformatexception.forinputstring( NumberFormatException.java:48) at java.lang.integer.parseint(integer.java:449) at java.lang.integer.parseint(integer.java:499) at Undantag.main(Undantag.java:3) 10 / 18 ArrayIndexOutOfBoundsException int n = Integer.parseInt(cmdLn[0]); int[] a = new int[n]; for(int i = 0; i<=a.length;i++){ a[i]=i; stray.hh.se% java Undantag 3 Exception in thread "main" java.lang.arrayindexoutofboundsexception: 3 at Undantag.main(Undantag.java:5) 11 / 18 Ytterligare en klient för Stats import java.io.file; Kompileringsfel! programs > javac Client3.java Client3.java:5: unreported exception java.io.filenotfoundexception; must be caught or declared to be thrown ^ 12 / 18

4 Korrigerade versionen Fångar undantaget import java.io.*; try { catch (FileNotFoundException e) { System.out.println(e.getMessage()); System.exit(0); Att läsa från URLs 13 / 18 Korrigerade versionen Kastar undantaget vidare import java.io.*; public static void main(string[] args) throws java.io.filenotfoundexception{ Att läsa från URLs 14 / 18 Web servers och html-filer Vi vill komma åt data som annars presenteras av webbläsare. Dessa data genereras i webbservrar i form av formatterad text och man kan komma åt dem via deras adress (URL). I Java finns stöd för att använda samma protokoll (http) som webbservrar använder. Då kan java-program ta emot text från en URL. En scanner från en URL private static Scanner scanner(string urlname) throws java.net.malformedurlexception, java.io.ioexception{ URL url = new URL(urlName); URLConnection site = url.openconnection(); InputStream is = site.getinputstream(); Scanner scanner = new Scanner(new BufferedInputStream(is)); return scanner; 15 / / 18

5 HTML Den formatterade texten Hos kan man få <th scope="row" width="48%"> Last Trade: </th> <td class="yfnc tabledata1"> <big> <b> <span id="yfs l10 goog">544.72</span> </b> </big> </td> Och då kan man filtrera det intressanta som finns inom <span> 17 / 18 Stocks try{ Scanner scanner = scanner(" String input = readall(scanner); int start = input.indexof("last Trade:", 0); int from = input.indexof("span id=\"yfs_l10_goog\">"); int to = input.indexof("</span>", from); System.out.println(input.substring(from + 23, to)); catch(java.net.malformedurlexception e) {System.out.println("malformed URL"); catch(java.io.ioexception e) {System.out.println("Could not open"); 18 / 18

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde. Programmering hh.se/db2004 Föreläsning 7: Funktioner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Funktioner Statiska metoder 1 Kan ta 0 eller flera argument. 2 Kan producera

Läs mer

Föreläsning 4: for, while, do-while

Föreläsning 4: for, while, do-while TDA 545: Objektorienterad programmering Föreläsning 4: for, while, do-while Magnus Myréen Chalmers, läsperiod 1, 2014-2015 Evaluering Det är viktigt att ni kan se hur kod körs. ( se = simulera på papper,

Läs mer

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye DD2310 Javaprogrammering för Pythonprogrammerare Johan Boye James Gosling pappa till Java Hej.java public class Hej { public static void main( String[] args ) { System.out.println( "Hej" ); Java basics

Läs mer

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel Objekt Instansvariabler Instansmetoder Klassvariabler Klassmetoder Inkapsling Föreläsning 6 Vad är ett objekt? Ett objekt har egenskaper, som kallas för objektets attribut Egenskaperna beskriver tillsammans

Läs mer

Roboten Karel lär sig Java

Roboten Karel lär sig Java Verónica Gaspes Högskolan i Halmstad 23 augusti 2010 Roboten Karel lär sig Java Tacksägelse Detta är en översättning och en anpassning till Högskolan i Halmstads programmeringsmiljö av delar av Karel the

Läs mer

PROV. 10 Uppräknade datatyper

PROV. 10 Uppräknade datatyper 10 10.1 10.2 Definition 10.3 Användning och regler 10.4 switch-satsen 10.5 Iteration över samtliga värden 10.6 Instansvariabler och instanstjänster 10.7 Värdespecifika implementationer 10.1 Hur ser vi

Läs mer

Föreläsning 5 Mer om funktioner, villkor

Föreläsning 5 Mer om funktioner, villkor Föreläsning 5 Mer om funktioner, villkor Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 15.9.2011 Varför? Det finns sammanhang där ett

Läs mer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel

Läs mer

Uppgradera till ArcGIS for Desktop 10.3

Uppgradera till ArcGIS for Desktop 10.3 Uppgradera till ArcGIS for Desktop 10.3 Innan du startar installationen kontrollera att din dator uppfyller systemkraven, se System requirements: http://desktop.arcgis.com/en/desktop/latest/get-started/system-requirements/arcgis-desktopsystem-requirements.htm

Läs mer

Laboration 12, Arrayer

Laboration 12, Arrayer Laboration 12, Arrayer Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration12 i ditt laborationsprojekt innan du fortsätter på denna laboration. Uppgift 1

Läs mer

Bg Autogiro. November 2014. Medgivande via Hemsida

Bg Autogiro. November 2014. Medgivande via Hemsida November 2014 Bg Autogiro Medgivande via Hemsida Postadress: 105 19 Stockholm Besöksadress: Palmfeltsvägen 5 Webb: bankgirot.se Bankgironr: 160-9908 Styrelsens säte: Stockholm Växel: 08-725 60 00 Org.nr:

Läs mer

Så surfar du säkrare 2 Skydda surfvanor på din dator 2 Skydda det du skickar 4 Skydda din identitet 4

Så surfar du säkrare 2 Skydda surfvanor på din dator 2 Skydda det du skickar 4 Skydda din identitet 4 Sus Andersson Så surfar du säkrare Så surfar du säkrare 2 Skydda surfvanor på din dator 2 Skydda det du skickar 4 Skydda din identitet 4 Digitalt Källskydd - en introduktion Sus Andersson, Fredrik Laurin

Läs mer

Anmälan om att du har fått ett säkert e-postmeddelande

Anmälan om att du har fått ett säkert e-postmeddelande Tullens tjänst Turvasähköposti Kundanvisning www.tulli.fi version 2.2 8.1.2015 ersätter version 2.1 22.5.2014 Tullens tjänst Turvasähköposti Tullen skickar dig ett krypterat e-postmeddelande när meddelandet

Läs mer

Hur använder jag CropSAT.se?

Hur använder jag CropSAT.se? Hur använder jag CropSAT.se? Börja med att kontrollera att din webbläsare (t.ex. Google Chrome, Firefox eller Internet Explorer) är uppdaterad till den senaste versionen. Bakgrundskartan som du ser kommer

Läs mer

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt: 8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),

Läs mer

Snabbguide: Användning av filsamling / resources i Mondo

Snabbguide: Användning av filsamling / resources i Mondo Vers 1.1 André Steinthorsson UPC Snabbguide: Användning av filsamling / resources i Mondo Filsamlingen är ett verktyg i Mondo som gör att du bl.a. kan ladda upp filer i din sajt och på så vis göra de tillgängliga

Läs mer

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Föreläsning 3

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Föreläsning 3 Föreläsning 3 3.3 for-satsen I programmering talar man om tre sätt på vilket ett programflöde kan vara beskaffat: 1. Saker kan hända efter varandra, i sekvens. 2. Flödet kan innebära att ett val görs,

Läs mer

Heltal(int) Programmeringsteknik 54

Heltal(int) Programmeringsteknik 54 Heltal(int) Datatypen int används tillsammans med char, short int och long int för att lagra heltal i C. Matematisk sett finns det oändligt många heltal. På en dator måste det införas en begränsning på

Läs mer

Cecilia Ingard. Boksidan

Cecilia Ingard. Boksidan Cecilia Ingard Boksidan Innehåll Vad som händer när datorn startar 3 Hur ser en dator bokstäverna? 12 Vad kan hända när man skriver ett brev 14 Inuti datorlådan 22 Moderkortet 23 Processorn 24 RAM-minnet

Läs mer

Introduktion... 3 Nya funktioner i 3.1... 3

Introduktion... 3 Nya funktioner i 3.1... 3 Nyheter i 3.1 1 Introduktion... 3 Nya funktioner i 3.1... 3 Lektionsplanerare...3 it s learning mobile...5 Inloggning...5 Användargränssnitt...6 eportfolio...6 Blogg...8 Inställningar och behörigheter...9

Läs mer

Näsgård Mobile TID Manual senast ändrad 2012-09-11. Näsgård Mobile TID. Inloggning

Näsgård Mobile TID Manual senast ändrad 2012-09-11. Näsgård Mobile TID. Inloggning Näsgård Mobile TID Generellt Näsgård Mobile TID är en tilläggsmodul och måste användas tillsammans med Näsgård Online modul i PC program. Näsgård Mobile TID kan användas separat eller tillsammans med Näsgård

Läs mer

E-faktura i ADJob 4.3

E-faktura i ADJob 4.3 E-faktura i ADJob 4.3 ADJob 4.3 ADJob Nordic AB 1985-2011. Alla rättigheter förbehålls. Programmet ADJob med dokumentation levereras under licens och får enbart användas och kopieras i enlighet med de

Läs mer

årskurs F-3 Berättelsen tar sin början.

årskurs F-3 Berättelsen tar sin början. Berättelsen tar sin början. Berättelsen tar sin början Inled berättelsen och arbetet med att läsa brev 1 från Pigglorna. Innan ni läser brevet väljer ni om ni vill låta eleverna tillverka var sin Piggla

Läs mer

Vad är Internet och vem bryr sig? Katarina Lycken Rüter på uppdrag av Webbstjärnan

Vad är Internet och vem bryr sig? Katarina Lycken Rüter på uppdrag av Webbstjärnan Vad är Internet och vem bryr sig? Katarina Lycken Rüter på uppdrag av Webbstjärnan Om.SE och Webbstjärnan Om.SE (www.iis.se).se (Stiftelsen för Internetinfrastruktur) är en oberoende allmännyttig organisation

Läs mer

KDiff3 är ett verktyg för jämförelser och sammanfogning av filer och kataloger, som

KDiff3 är ett verktyg för jämförelser och sammanfogning av filer och kataloger, som Handbok KDiff3 Joachim Eibl Översättare: Stefan Asserhäll Revision 0.9.92 (2007-31-03) Copyright 2002-2007 Joachim Eibl Permission is granted to copy, distribute and/or modify

Läs mer

Att svara på en remiss

Att svara på en remiss Att svara på en remiss Varje år skickar Regeringskansliet betänkanden, utredningar och andra förslag på remiss. Det betyder att myndigheter, organisationer och personer har möjlighet att svara på vad de

Läs mer

Läsa in och modellera data. Qlik Sense 1.0.3 Copyright 1993-2015 QlikTech International AB. Alla rättigheter förbehållna.

Läsa in och modellera data. Qlik Sense 1.0.3 Copyright 1993-2015 QlikTech International AB. Alla rättigheter förbehållna. Läsa in och modellera data Qlik Sense 1.0.3 Copyright 1993-2015 QlikTech International AB. Alla rättigheter förbehållna. Copyright 1993-2015 QlikTech International AB. Alla rättigheter förbehållna. Qlik,

Läs mer

Rådgivning inom livsmedelskontrollen

Rådgivning inom livsmedelskontrollen Rådgivning inom livsmedelskontrollen FÖR FÖRETAGARE 2 Inledning I våra möten med er livsmedelsföretagare ser vi att det finns efterfrågan på mer rådgivning och information från kontrollmyndigheterna. Samtidigt

Läs mer