Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Relevanta dokument
Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Del A (obligatorisk för alla)

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Del A (obligatorisk för alla)

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Föreläsning 3-4 Innehåll

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Del A (obligatorisk för alla)

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

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

Objektorienterad Programmering (TDDC77)

TENTAMEN OOP

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

OOP Objekt-orienterad programmering

Föreläsning 9-10 Innehåll

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

JAVAUTVECKLING LEKTION 7

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Föreläsning 6: Metoder och fält (arrays)

Föreläsning 2, vecka 8: Repetition

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Tentamen i Programmeringsteknik I

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

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

Objektorienterad Programmering (TDDC77)

Instuderingsfrågor, del D

Dagens föreläsning. Instickssortering med hjälp av en ArrayList. Omslagsklasser. Metoderna equals och compareto. Läsa filer. Scanner-repetition

Tentamen OOP

Objekt som argument. Föreläsning 7-8 Innehåll. Hur komma åt den andra kvadratens attribut? Anropa metod på objektet självt

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Föreläsning 7-8 Innehåll

[] Arrayer = Indexerad variabel

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Tentamen i Programmeringsteknik I

Programmeringsteknik I. Föreläsning 3: Klasser och arrayer

PROGRAMMERING-Java TENTAMINA

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Chapter 4: Writing Classes/ Att skriva egna klasser.

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Input. Programmering. Andra källor

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

PROGRAMMERING-Java Omtentamina

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Föreläsning REPETITION & EXTENTA

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

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

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler

Tentamen, EDAA20/EDA501 Programmering

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Malmö högskola 2007/2008 Teknik och samhälle

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Tentamen i Programmeringsteknik I,, KandMa/Fy,

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

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

Presentation av trafiksimuleringsprojektet

TENTAMEN OOP

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Tentamen. Lösningsförslag

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

TENTAMEN OOP

Tentamen , Introduktion till Java, dtaa98, dtea53

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Typkonvertering. Java versus C

Parallellism, återblick

OOP Objekt-orienterad programmering

Transkript:

(10 februari 2019 F4 1 ) Dagens föreläsning Sett i datorsalarna Mer om arrayer Matriser Formatering av utskrifter Inläsning med hjälp av Scanner-klassen

(10 februari 2019 F4 2 ) Hört och sett if-loop Skall vara if-sats!!

(10 februari 2019 F4 3 ) Hört och sett Uppgiften skriv en metod som returnerar... public void metod(...) {... System.out.println("Värdet är: " +...); Skall vara public typ metod(...) {... return...;

(10 februari 2019 F4 4 ) Sett vid redovisningar... d.getvalue(); System.out.println(d.getValue());... Första d.getvalue() meningslöst har ingen effekt!

(10 februari 2019 F4 5 ) Sett vid redovisningar Vad händer när nedanstående kod körs? int i = 1; while (i < 10); {... i = i + 1; Skriver nedanstående kod något? int x = 1; if (x < 0); { System.out.println("x är negativt");

(10 februari 2019 F4 6 ) Sett vid redovisningar Vad skrivs ut av int i = 1; i = i++; System.out.println(i); Vad får n för värde i dessa fall? i = 1; n = i + i++; i = 1; n = i++ + i; Råd: Använd operatorerna ++ och -- som självständiga satser

(10 februari 2019 F4 7 ) Metoder kan returnera arrayer public static double[] quadequation(double p, double q) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); return null; else { d = Math.sqrt(d); double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return r;

(10 februari 2019 F4 8 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots; roots = quadequation(2, 1);... roots? main

(10 februari 2019 F4 9 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots; roots = quadequation(2, 1);... public static double[] quadequation(double p, double q) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); return null; else { d = Math.sqrt(d); double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return r; roots? main p 2 q 1 d? r? quadequation

(10 februari 2019 F4 10 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots; roots = quadequation(2, 1);... public static double[] quadequation(double p, double q) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); return null; else { d = Math.sqrt(d); double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return result; roots? main p 2 q 1 d 1 r quadequation 1 1

(10 februari 2019 F4 11 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots; roots = quadequation(2, 1);... public static double[] quadequation(double p, double q) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); return null; else { d = Math.sqrt(d); double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return result; roots main p 2 q 1 d 1 r quadequation 1 1

(10 februari 2019 F4 12 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots; roots = quadequation(2, 1); roots... main 1 1

(10 februari 2019 F4 13 ) En anmärkning De 4 sista raderna i quadequation: double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return r; kan ersättas med return new double[]{-p/2+d, -p/2-d;

(10 februari 2019 F4 14 ) Alternativ design Låt den anropande koden skapa arrayen skicka den som parameter. public static void quadequation(double p, double q, double[] r) { double d = (p*p - 4*q)/4; if (d < 0) {... else { d = Math.sqrt(d); double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return r;

(10 februari 2019 F4 15 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots = new double[2]; quadequation(2, 1, roots);... roots main 0 0

(10 februari 2019 F4 16 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots = new double[2]; quadequation(2, 1, roots);... public static void quadequation(double p, double q, double[]r) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); else { d = Math.sqrt(d); r[0] = -p/2 + d; r[1] = -p/2 - d; roots main p 2 q 1 d? r quadequation 0 0

(10 februari 2019 F4 17 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots = new double[2]; quadequation(2, 1, roots);... public static void quadequation(double p, double q, double[]r) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); else { d = Math.sqrt(d); r[0] = -p/2 + d; r[1] = -p/2 - d; roots main p 2 q 1 d 1 r quadequation 1 1

(10 februari 2019 F4 18 ) Klassen RandomArray i nätlektion 6 public class RandomArray { private int[] thearray; public RandomArray(int size, int limit) { thearray = new int[size]; randomize(limit); public RandomArray(int size) { this(size, 10); Tre konstruktorer. Kan anropa varandra. Kan anropa metoder. public RandomArray() { this(25);

(10 februari 2019 F4 19 ) Klassen RandomArray i nätlektion 6 public void randomize(int limit) { for (int i = 0; i<thearray.length; i++) { thearray[i] = (int)(math.random()*limit); Kan man skriva den med en for-each -sats? public void randomize(int limit) { for (int i : thearray) { i = (int)(math.random()*limit);? Näää!

(10 februari 2019 F4 20 ) Klassen RandomArray i nätlektion 6 public class RandomArray { private int[] thearray; public RandomArray(int size, int limit) { thearray = new int[size]; randomize(limit); public RandomArray(int size) { this(size, 10); public RandomArray() { this(25); Vad blir resultatet av nedanstående uttryck? new RandomArray(5,10) new RandomArray(20) new RandomArray()

(10 februari 2019 F4 21 ) Klassen RandomArray i nätlektion 6 public String tostring() { String ret = ""; for (int i= 0; i< thearray.length; i++) { ret = ret + thearray[i]; if (i < thearray.length-1) { ret = ret + ", "; return "<" + ret + ">"; Kan tostring skrivas med en for-each -loop? Nej, det går inte att få kommatecken enbart mellan elementen. (Däremot kan man skriva den så här: return java.util.arrays.tostring(thearray);)

(10 februari 2019 F4 22 ) Övning: En metod som vänder på arrayen public void reverse1() { int n = thearray.length - 1; for (int i = 0; i <= n; i++) { int x = thearray[i]; thearray[i] = thearray[n-i]; thearray[n-i] = x; (Bekvämt med ett lokalt kortare namn) Kommentar? Fungerar ej! Byter ju tillbaka. Lösning: Stoppa loopen när hälften när första halvan behandlats!. Demo reverse

(10 februari 2019 F4 23 ) Alternativ reverse public void reverse3() { int n = thearray.length; int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = thearray[n-1-i]; thearray = a; Vad händer?

(10 februari 2019 F4 24 ) Så här ser det ut när vi just anropat reverse3 public void reverse3() { Här int n = thearray.length; int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = thearray[n-1-i]; thearray rev3 a 1 2 3 4 thearray = a;

(10 februari 2019 F4 25 ) Så här ser det ut när vi är public void reverse3() { int n = thearray.length; int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = thearray[n-1-i]; här thearray = a; thearray rev3 a 4 1 2 3 3 2 1 4

(10 februari 2019 F4 26 ) och när vi är public void reverse3() { int n = thearray.length; int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = thearray[n-1-i]; thearray rev3 a 4 1 2 3 3 2 1 4 thearray = a; här

(10 februari 2019 F4 27 ) och när reverse3 är klar. public void reverse3() { int n = thearray.length; int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = thearray[n-1-i]; thearray = a; thearray 1 2 4 3 2 1 3 4

(10 februari 2019 F4 28 ) Annan design på reverse Låt metoden skapa och returnera ett nytt objekt: public RandomArray reverse4() { int n = thearray.length; RandomArray result = new RandomArray(n); for (int i = 0; i < n; i++) { result.thearray[i] = this.thearray[n-i-1]; return result;

(10 februari 2019 F4 29 ) Skapa ett RandomArray-objekt med en given array Antag att vi vill kunna skapa ett objekt med en given array, t ex: int a[] = {1, 2, 3, 4, 5, 6; RandomArray ra = new RandomArray(a); Behövs en till konstruktor: public RandomArray(int[] a) { thearray = a; Hur fungerar den? Är den bra?

(10 februari 2019 F4 30 ) Konstruktor med array-parameter Skapa ett eget array-objekt och kopiera värden från parametern till den: public RandomArray(int[] a) { thearray = new int[a.length]; for (int i = 0; i < a.length; i++) { thearray[i] = a[i]; Nu har klassen själv kontroll över vad som händer i arrayen. Det är dock inte säkert att man alltid vill ha det så!

(10 februari 2019 F4 31 ) Några frågor Antag RandomArray ra = new RandomArray(); Fungerar det att skriva int x = ra[3]? Fungerar det att skriva int x = ra.thearray[3]? Vad är skapas av nedanstående uttryck? new RandomArray(3) respektive new RandomArray[3] Är det någon mening att skriva en klass med bara en instansvariabel?

(10 februari 2019 F4 32 ) Tvådimensionella arrayer matriser En matris är en array där elementen är arrayer: m 3 11 5 7 1 2 4 0 Kan skapas med medan int[][] m = { {3, 11, 5, 7, {1, -2, 4, 0, {6, 7, 2, -9 ; int[][] m = new int[3][4]; skapar en 3x4 matris med nollor. 6 7 2 9

(10 februari 2019 F4 33 ) Exempel: Statistik på tärningspar public class PairOfDice { private Dice[] dice = new Dice[2]; public PairOfDice(int n1, int n2) { dice[0] = new Dice(n1); dice[1] = new Dice(n2); Implementation med en array som skapas i deklarationen Tärningarna måste skapas i konstruktorn. public void roll() { for(dice d : dice) { d.roll(); public int getvalue(int i) { return dice[i%2].getvalue(); Jämnt värde ger tärning 0, udda värde tärning 1

(10 februari 2019 F4 34 ) Statistikklass PoDStatistics public static void main(string[] args){ PairOfDice pod = new PairOfDice(4, 8); int[][] freq = new int[4][8]; for (int i = 1; i<=10000; i++) { pod.roll(); freq[pod.getvalue(0)-1][pod.getvalue(1)-1]++; for (int i= 0; i<4; i++) { for (int j=0; j<8; j++) { System.out.print(freq[i][j]/10000 + " "); System.out.println(); System.out.println(); Ser ni buggen? Demo PoDStatistics

(10 februari 2019 F4 35 ) Typiska fel Glömma skapa arrayen: int[] a; a[i] = 4; Felaktigt index: int[] a = new int[5]; a[5] = 4; NullPointerException ArrayIndexOutOfBoundsException Glömma att skapa objekten i en objektarray : Turtle[] t = new Turle[5]; t[0].move(40); NullPointerException Observera att felmeddelandet säger var felet har inträffat!

(10 februari 2019 F4 36 ) Javadoc ett sätt att producera dokumentationssidor /** * Represents a pair of dice * @version 2019-02-05 * @author Tom Smedsaas */ public class PairOfDice { private Dice d1; private Dice d2; /** * Creates of pair of dice with a specified number of sides * @param n1 number of sides of the first dice * @param n2 number of sides of the second dice */ public PairOfDice(int n1, int n2) {... /** * Roll the dice * @return An array with the values */ public int[] roll() {... Se vidare minilektionen!

(10 februari 2019 F4 37 ) Kommunikation med användaren Utskrifter i terminalfönster ( konsolen ). Gjort med System.out.print och System.out.println. Ska visa på bättre möjligheter att redigera utskrifterna (t ex ange antal decimaler) med format-metoden. Tolka ( läsa in ) information som användaren skriver i terminalfönstret. Ska visa på användning av Scanner-klassen. Dialog-rutor är ett alternativ till att använda konsolen. Grafiska användargränssnitt ( GUI ).

(10 februari 2019 F4 38 ) Utskrift med println Exempel: Koden int x = 10; double sinx = Math.sin(x); double expx = Math.exp(x); System.out.println("x = " + x + ", sin(x) = " + sinx + ", exp(x) = " + expx); resulterar i utskriften x = 10, sin(x) = -0.5440211108893698, exp(x) = 22026.465794806718

(10 februari 2019 F4 39 ) Utskrift med format int x = 10; double sinx = Math.sin(x); double expx = Math.exp(x); System.out.format("x = %d, sin(x) = %7.4f, cos(x) = %10.4e\n", x, sinx, expx); resulterar i utskriften x = 10, sin(x) = -0.5440, cos(x) = 2.2026e+04 i stället för x = 10, sin(x) = -0.5440211108893698, exp(x) = 22026.465794806718

(10 februari 2019 F4 40 ) format-metoden format(s, p 1, p 2,..., p n ) skapar ett String-objekt utifrån strängen s. Strängen s ska innehålla formatkoder en för var och en de övriga parametrarna. Varje formatkod byts mot värdet av motsvarande parameter. Exempel på formatkoder: %d plats för ett heltal %10d heltal i ett fält om 10 positioner, högerjusterat %-10d heltal i ett fält om 10 positioner, vänsterjusterat %8.2f flyttal i ett fält om 8 positioner, 2 decimaler %12.3e flyttal i ett fält om 12 positioner, 3 decimaler på exponentform %12s flyttal i ett fält om 12 positioner, högerjusterat %-12s flyttal i ett fält om 12 positioner, vänsterrjusterat %c teckenvärde (char)

(10 februari 2019 F4 41 ) format-metoden Radbyte format("x = %d, sin(x) = %7.4f, cos(x) = %10.4e \n", x, sinx, expx ) Metoden format finns, förutom i System.out, som klassmetod i String. Exempel: String name = "Kalle Kula"; int age = 36; String str = String.format("%s är %d år", name, age); kommer att ge str värdet Kalle Kula är 36 år

(10 februari 2019 F4 42 ) Klassen Scanner Metoden format är (ett) sätt att omvandla tal mm till text. För att gå åt andra hållet dvs omvandla text ( strömmar av tecken ) till tal mm. kan Scanner-klassen användas. Exempel: Scanner scan = new java.util.scanner(system.in); System.out.print("Antal sidor: "); int sides = scan.nextint(); System.out.print("Antal slag : "); int rolls = scan.nextint();... Demo ScannerDemo1 Normalt importeras klassen med satsen import java.util.scanner. Då behöver man inte ange java.util när man refererar klassen.

(10 februari 2019 F4 43 ) Metoder i Scanner int nextint() double nextdouble() läs och returnera nästa heltal läs och returnera nästa flyttal Dessa metoder läser förbi eventuella blanktecken och radslut. Om det inte går att tolka nästa grej som den typ man efterfrågar avbryts programmet. För att hantera detta kan man testa med metoderna: boolean hasnextint() boolean hasnextdouble() true om OK att anropa nextint true om OK att anropa nextdouble Demo ScannerDemo2

(10 februari 2019 F4 44 ) Metoder i Scanner För att läsa annat än tal: String next() String nextline() boolean hasnext() boolean hasnextline() läs och returnera nästa tok ( grej ) läs och returnera nästa rad true om det finns något icke-blankt att läsa true om det finns en rad att läsa Viktigt att veta att nextline() läser resten av raden. next, nextint och nextdouble byter inte rad efter fullbordad läsning. Ställer lätt till trassel vid blandning av rad- och talläsning.

Exempel Nedanstående kod är tänkt att först läsa ett tal och sedan en hel rad. public class ScannerDemo3 { public static void main(string[] s) { Scanner scan = new Scanner(System.in); System.out.print("Tal : "); int n = scan.nextint(); System.out.print("Text: "); String txt = scan.nextline(); System.out.println("Tal : " + n); System.out.println("Text: " + txt); Demo ScannerDemo3 Måste byta rad med ett nextline innan nästa rad kan läsas. (10 februari 2019 F4 45 )

(10 februari 2019 F4 46 ) Exempel: Läs rader och summera talen på varje rad för sig Så här Scanner scan = new Scanner(System.in); while (scan.hasnextline()) { int sum = 0; while (flera tal på raden ) { sum += scan.nextint(); System.out.println(sum);? Det finns inget enkelt sätt att se om det finns flera tal på raden. Bättre att läsa rad för rad till en String och koppla ett nytt Scanner-objekt till detta.

(10 februari 2019 F4 47 ) Exempel: Läs rader och summera talen på varje rad för sig public class ScannerDemo4 { public static void main(string[] args) { Scanner scan = new Scanner(System.in); En scanner för tangentbordet while (scan.hasnextline()) { Så länge det finns rader: String line = scan.nextline(); Läs en rad Scanner linescan = new Scanner(line); Koppla scanner till raden int sum = 0; while (linescan.hasnextint()) { sum += linescan.nextint(); linescan.close(); System.out.println(sum); scan.close(); Så länge fler tal på raden: Läs tal och summera Stäng rad-scannern. Stäng tangentbords-scannern