Input. Programmering. Andra källor
|
|
- Torbjörn Samuelsson
- för 9 år sedan
- Visningar:
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.
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 merFö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 merDD2310. 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 merVad ä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 merRoboten 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 merPROV. 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 merFö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 merMetodanrop - 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 merUppgradera 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 merLaboration 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 merBg 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 merSå 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 merAnmä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 merHur 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 merNedan 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 merSnabbguide: 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 mer3.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 merHeltal(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 merCecilia 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 merIntroduktion... 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 merNä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 merE-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.
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 merVad ä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 merKDiff3 ä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 merAtt 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 merLä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 merRå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