Forelesning inf Java 5

Like dokumenter
INF1000 : Forelesning 5

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

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

Java 6. Eksempel med to-dimensjonal array Filbehandling Tekster

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

Oversikt. Filer. Litt mer om tekster. INF1000 Uke 6. Lese og skrive fra/til fil. Eksempel. Vi importerer pakken easyio. Klassene In og Out i easyio

INF1000 Uke 5. Litt om objekter, filer med easyio, tekst

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

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

Inf1000, uke 5 19 sept. 2006

Ole Christian Lingjærde, 12. september 2013

Forelesning inf Java 4

Forelesning inf Java 5

Forelesning inf Java 5

Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java

Metodekall. INF1000 Uke 5. Overlasting av metoder. Bruk av arrayreferanser som parametre

Inf1000 uke sept 2011

Inf1000 uke sept 2011

INF1000 (Uke 6) Mer om metoder, tekster

Rep: Metoder. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. 3 typer variable: Klassevariable. Java-programmene så langt i kurset:

Inf1000 (Uke 5) Arrayer, filer og tekst

INF1000 (Uke 6) Mer om metoder, tekster

Orakeltjeneste på Abel Hjelp til Obligatorisk oppgave 2. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. Rep: Metoder

Java-program. INF1000 høst Numeriske typer. long og float

INF1000 høst 2010 Forelesning 3: Avrunding av elementær innføring

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

Inf1000 (Uke 8) Mer om objekter og filbehandling

Dagens plan. Inf1000 (Uke 8) Mer om objekter og filbehandling. Hva er en metode. Mer om metoder/klasser/objekter. Tilslutt noen råd til oblig 3

Dagens plan. Inf1000 (Uke 8) Mer om objekter og filbehandling. Hva er en metode. Mer om metoder/klasser/objekter. Tilslutt noen råd til oblig 3

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

Blokker og metoder INF1000 (Uke 6) Metoder

Forelesning inf Java 4

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 Behandling av tekster

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

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

INF1000 : Forelesning 4

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

Teste om to tekster er like. Inf1000 uke 6 26.sept Alfabetisk ordning. Inneholder en tekst en annen? Litt om tekster Metoder

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println();

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

UNIVERSITETET I OSLO

Repetisjon INF 1000 våren 2006

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

INF1000 (Uke 4) Mer om forgreninger, While-løkker

UNIVERSITETET I OSLO

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

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

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

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

Mål for INF1000. Repetisjon INF 1000 våren Representasjon av data. Programvareutvikling - oversikt

Java 4. Mer om easyio Mer om forgreninger Løkker. 7. september 2004

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

Repetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator

Endret litt som ukeoppgave i INF1010 våren 2004

INF 1000 høsten 2011 Uke 3 6. september

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

Body Mass Index (BMI) INF1000 : Forelesning 3. Ferdig program (forts.) Ferdig program

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

INF1000 : Forelesning 3

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

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

Innhold uke 3. INF 1000 høsten 2011 Uke 3 6. september. Uttrykk. Variabel: En plass i hukommelsen

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

INF1000 : Forelesning 1 (del 2)

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

UNIVERSITETET I OSLO

INF1000: noen avsluttende ord

INF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)

Eksempel: Body Mass Index (BMI) Forelesning inf Java 3. Ferdig program (første del) Ferdig program (siste del)

Gjennomgang av eksamen H99

De neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11).

Blokker. Uke 4, INF 1000, 13 sept Løkker og arrayer. Eksempel. Deklarasjoner inne i blokker. Institutt for Informatikk Universitet i Oslo

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

UNIVERSITETET I OSLO

INF1000 : Forelesning 2

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

UNIVERSITETET I OSLO

Innlesning fra tastatur med easyio. INF1000 høst Vi må først skrive i toppen av programmet: import easyio.*;

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Fullstendige programeksempler. INF1000 : Forelesning 2. Eksempel 1. Eksempel 2. Vi skal nå se på endel programeksempler.

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

Løse reelle problemer

INF1000: Forelesning 4. Mer om arrayer Metoder

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene:

INF1000-SIKT - Notat om I/O i Java

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; }

UNIVERSITETET I OSLO

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

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

INF Uke 10. Ukesoppgaver oktober 2012

Transkript:

Forelesning inf1000 - Java 5 Tema: En liten quiz (se utdelt ark) Filbehandling Tekster Ole Christian Lingjærde, 19. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 1

Forelesningsquiz Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min. (har du ikke lyst å snakke med noen kan du naturligvis gjøre oppgaven alene...) Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 2

Oppgave 1 Metode som returnerer summen av alle verdiene i arrayen x: double beregnsum (double[] x) { Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 3

Oppgave 1 Metode som returnerer summen av alle verdiene i arrayen x: double beregnsum (double[] x) { double sum = 0; for (int i=0; i<x.length; i++) { sum += x[i]; return sum ; Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 4

Oppgave 2 Metode som returnerer en kopi av arrayen a: int[] lagkopi (int[] a) { Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 5

Oppgave 2 Metode som returnerer en kopi av arrayen a: int[] lagkopi (int[] a) { int[] b = new int[a.length]; for (int i=0; i<b.length; i++) { b[i] = a[i]; return b; Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 6

Oppgave 3 Metode som teller antall positive elementer i x: int antallpositive (int[][] x) { Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 7

Oppgave 3 Metode som teller antall positive elementer i x: int antallpositive (int[][] x) { int cnt = 0; for (int i=0; i<x.length; i++) { for (int j=0; j<x[0].length; j++) { if (x[i][j] > 0) { cnt++; return cnt; Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 8

Oppgave 4 (forslag 1) int finnsum1 (int[][] x) { int sum = 0; for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { if (x[i][j] > 0) { sum += x[i][j]; return finnsum1; FEIL Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 9

Oppgave 4 (forslag 2) int finnsum2 (int[][] x) { int z = 0; for (int i=1; i<10; i++) { for (int j=1; j<10; j++) { if (x[i][j] > 0) { z += x[i][j]; return z; FEIL Hopper over elementene x[0][1], x[0][2],... x[1][0], x[2][0],... Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 10

Oppgave 4 (forslag 3) int finnsum3 (int[][] x) { int sum = 0; int i = 0, j = 0; while (i <= 10) { while (j <= 10) { if (x[i][j] > 0) { sum += x[i][j]; i++; j++; return sum; De to tellerne økes FEIL i takt (får ikke med alle kombinasjoner) Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 11

Lese fra fil med easyio import easyio.*; Vi må først importere pakken easyio Vi åpner filen for lesing class LesFraFil { public static void main (String[] args) { In fil = new In("minfil.txt"); String s = fil.readline(); System.out.println("Første linje var: " + s); Her leses hele første linje av filen Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 12

De vanligste lesemetodene Metoder: inint() indouble() inword() inchar() readline() hasnext() endoffile() leser et heltall leser et flyttall leser et ord leser et tegn leser en linje (også tomme) returnerer true hvis flere ikke-blanke tegn returnerer true hvis alle tegn er lest Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 13

Eksempel Program som leser en fil med to kolonner: en kolonne med desimaltall, og en kolonne med tekst. import easyio.*; class LesFraFil2 { public static void main (String[] args) { In fil = new In("fil.txt"); double[] x = new double[100]; String[] s = new String[100]; int ant = 0; while (fil.hasnext()) { x[ant] = fil.indouble(); s[ant] = fil.readline(); ant++; for (int i=0; i<ant; i++) { System.out.println(x[i] + "\t" + s[i]); Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 14

Lese linje for linje Metoder: readline() endoffile() for å lese en linje for å sjekke om slutten av filen er nådd Eksempel: lese en fil linjevis In fil = new In("fil.txt"); while (!fil.endoffile()) { String s = fil.readline(); System.out.println( Linjen var + s); Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 15

Eksempel Program som leser en tekstfil linje for linje: import easyio.*; class LesFraFil3 { public static void main (String[] args) { In fil = new In("fil.txt"); String[] s = new String[100]; int ant = 0; while (!fil.endoffile()) { s[ant] = fil.readline(); ant = ant + 1; for (int i=0; i<ant; i++) { System.out.println(s[i]); Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 16

Lese tegn for tegn Metoder: inchar() endoffile() for å lese et tegn (også blanke og linjeskift) for å sjekke om slutten av filen er nådd Eksempel: lese en fil tegn for tegn In fil = new In("fil.txt"); while (!fil.endoffile()) { char c = fil.inchar(); System.out.println( Tegnet var + c); Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 17

Eksempel Program som leser en tekstfil tegn for tegn og skriver ut på skjerm, sammen med antall tegn i filen: import easyio.*; class LesFraFil4 { public static void main (String [] args) { In fil = new In("fil.txt"); int antall = 0; while (!fil.endoffile()) { System.out.print(fil.inChar()); antall++; System.out.println("\nAntall tegn: " + antall); Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 18

hasnext og endoffile endoffile() sjekker om alle tegn i filen er lest hasnext() sjekker om det er ikke-blanke tegn igjen i filen Eksempel: Fil som skal leses Samme fil, slik den ser ut for datamaskinen 3.253 12.65-23.553 = ny linje (enter, carriage return) = blankt tegn (mellomrom, tabulator) hasnext() leser forbi disse og møter slutten av fila 3.253 12.65-23.553 Her står lesemerket rett etter at første tall er lest Her står lesemerket rett etter at siste tall er lest Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 19

Når filens lengde er kjent Når et program skal lese en fil, må det ha en mulighet til å avgjøre når slutten av filen nådd - ellers kan det oppstå en feilsituasjon. Metodene hasnext() og endoffile() kan benyttes til dette. Noen ganger er filens lengde kjent på forhånd: lengden er kjent før programmet kjøres lengden ligger lagret i begynnelsen av filen Da kan vi i stedet benytte en for-løkke. Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 20

Eksempel: fil med kjent lengde Program som leser en fil med 10 desimaltall, hvor tallene er atskilt med blanke tegn og/eller linjeskift: import easyio.*; class LesFraFil5 { public static void main (String[] args) { double[] x = new double[10]; In fil = new In("fil.txt"); for (int i=0; i<10; i++) { x[i] = fil.indouble(); // Nå kan vi evt. gjøre noe med verdiene i arrayen x Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 21

Nok at tallene er atskilt Programmet på forrige foil ville gitt akkurat samme resultat for alle disse filene: 15.2 6.23 3.522 3.6 8.893-3.533 65.23 22.01 45.02 7.2 15.2 6.23 3.522 3.6 8.893-3.533 65.23 22.01 45.02 7.2 15.2 6.23 3.522 3.6 8.893-3.533 65.23 22.01 45.02 7.2 Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 22

Eksempel: fil med lengde-info Program som leser en fil med desimaltall, hvor tallene er atskilt med blanke tegn og/eller linjeskift. Antall tall som skal leses ligger her øverst i filen. import easyio.*; class LesFraFil6 { public static void main (String[] args) { double[] x; // bestemmer ikke lengden ennå In fil = new In( fil.txt ); int lengde = fil.inint(); // nå vet vi lengden x = new double[lengde]; for (int i=0; i<lengde; i++) { x[i] = fil.indouble(); // Nå kan vi evt. gjøre noe med verdiene i arrayen x Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 23

Eksempel: fil med sluttmerke Program som leser en fil med desimaltall, hvor tallene er atskilt med blanke tegn og/eller linjeskift. Slutten av filen er markert med tallet -999. import easyio.*; class LesFraFil7 { public static void main (String [] args) { double [] x = new double[100]; // antar max 100 tall på fil In fil = new In("fil.txt"); double siste = 0; int ant = 0; while (siste!= -999) { siste = fil.indouble(); if (siste!= -999) { x[ant] = siste; ant++; // Nå ligger det verdier i x[0], x[1],..., x[ant-1] Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 24

Lese en fil med mer komplisert format Anta at vi skal lese en fil med følgende format: Først er det en linje med 3 overskrifter (separert av blanke tegn) Deretter kommer det en eller flere linjer, som hver består av et heltall, et desimaltall og en tekststreng (separert av blanke tegn) Eksempel: Antall Pris Varenavn 35 23.50 Oppvaskkost 53 33.00 Kaffe 97 27.50 Pizza.................. Dataene som leses skal programmet ta vare på for senere formål. Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 25

Framgangsmåte Den første linja er spesiell, og vi tenker oss her at den ikke er så interessant - vi ønsker bare å få lest forbi den. Det kan vi gjøre med readline(). De andre linjene har samme format, så vi kan lage en løkke hvor hvert gjennomløp av løkken leser de tre itemene på en linje. Vi bruker da henholdsvis inint(), indouble() og inword(). For å vite når filen er slutt, kan vi enten bruke endoffile() eller hasnext(). Siden vi leser filen itemvis, er det mest naturlig å bruke hasnext(). Da får vi heller ikke problemer dersom det skulle ligge noen blanke helt på slutten av filen. For detaljer, se ukeoppgave. Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 26

Noen nyttige hjelpemidler (ikke pensum) Sjekke om det finnes en fil med et bestemt navn: boolean ok = new File("filnavn").exists(); if (ok) { System.out.println("Filen finnes"); Slette en fil: boolean ok = new File("filnavn").delete(); if (ok) { System.out.println("Filen ble slettet"); Avgjøre hvilket filområde programmet ble startet fra: String curdir = System.getProperty("user.dir"); Lage liste over alle filer og kataloger på et filområde: String [] allefiler = new File("filområdenavn").list(); Merk: klassen File ligger i pakken java.io som derfor må importeres først. Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 27

Skrive til fil import easyio.*; Vi må først importere pakken easyio Vi åpner filen for skriving class SkrivTilFil { public static void main (String [] args) { Out fil = new Out("minfil.txt"); fil.outln("dette er første linje"); fil.close(); Vi må huske å lukke filen til slutt Her skrives en linje med tekst til filen Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 28

Hvilke skrivemetoder finnes? Datatype Eksempel Beskrivelse int fil.out(x); fil.out(x, 6); Skriv x Skriv x høyrejustert på 6 plasser double fil.out(x, 2); fil.out(x, 2, 6); Skriv x med 2 desimaler Skriv x med 2 desimaler på 6 plasser char fil.out(c); Skriv c String fil.out(s); fil.out(s, 6); fil.outln(); fil.close(); Skriv s Skriv s på 6 plasser (venstrejustert) Skriv en linjeskift Lukk filen Merk: dersom antall plasser spesifiseres og det ikke er plass til det som skal skrives ut, vil det som skrives ut avsluttes med tre punktumer:... Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 29

Tekster og klassen String En tekststreng er en sekvens av tegn (null, en eller flere), f.eks. & Kaia er student Hver tekststreng vi lager er et objekt av typen String En String-variabel (f.eks. String s) er en referanse til et slikt objekt Resultatet av å utføre String s = kake : kake s For å finne lengden (dvs antall tegn i) en tekst: int lengde = s.length(); Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 30

Bruk av spesialtegn Både i char-uttrykk og String-uttrykk kan vi ha mange ulike typer tegn Alle Unicode-tegn er tillatt Unicode er en standard som tillater tusenvis av tegn (ulike varianter fins; den som støttes av Java tillater 65536 ulike tegn) Alle tegnene kan angis som \uxxxx hvor hver x er en av 0, 1, 2,..., 9, A, B, C, D, E, F Eksempel: \u0041 er tegnet A Noen spesialtegn har egen forkortelse: \t tabulator \n linjeskift \ dobbelt anførselstegn \ enkelt anførselstegn \\ backslash Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 31

Unicode (http://www.unicode.org).... Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 32

Andre eksempler på Unicode-tegn Tibetanske tegn Musikksymboler Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 33

Teste om to tekster er like For å teste om to tekststrenger er like, brukes equals: // Anta at s og t er tekstvariable (og at s ikke har verdien null) if (s.equals(t)) { System.out.println("Tekstene er like"); else { System.out.println("Teksten er forskjellige"); Bruk av == virker av og til, men ikke alltid: String s = "abc"; String t = "def"; String tekst1 = s + t; String tekst2 = s + t; Nå er tekst1.equals(tekst2) true, mens tekst1 == tekst2 er false. Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 34

De enkelte tegnene i en tekststreng Tegnene i en tekststreng har posisjoner indeksert fra 0 og oppover 0 1 2 3 k a k e Vi kan få tak i tegnet i en bestemt posisjon: String s = kake ; char c = s.charat(1); // Nå er c == a Vi kan erstatte alle forekomster av et tegn med et annet tegn: String s1 = kake ; String s2 = s1.replace( k, r ); // Nå er s2 en referanse til tekststrengen rare Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 35

Deler av en tekststreng Vi kan trekke ut en del av en tekststreng: String s = Paris ; String s1 = s.substring(1,4); // Nå er s1 tekststrengen ari 0 1 2 3 4 P a r i s Generelt: s.substring(1,4) s.substring(index1, index2) Første posisjon som skal være med Første posisjon som ikke skal være med Siste del av en tekststreng: String s = Paris er hovedstaden i Frankrike ; String s1 = s.substring(6); // Nå er s1 tekststrengen er hovedstaden i Frankrike Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 36

Konvertere mellom små og store bokstaver Vi kan konvertere fra små til store bokstaver: String s = Jeg ER 18 år ; String s2 = s.touppercase(); // Nå er s2 tekststrengen JEG ER 18 ÅR Vi kan konvertere fra store til små bokstaver: String s = Jeg ER 18 år ; String s2 = s.tolowercase(); // Nå er s2 tekststrengen jeg er 18 år Det finnes tilsvarende metoder for å konvertere char-verdier: char c = x ; char c2 = Character.toUpperCase(c); char c3 = Character.toLowerCase(c); NB: merk skrivemåten! Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 37

Alfabetisk ordning Anta at s og t er tekstvariable (og at s ikke har verdien null) Er s foran t i alfabetet? int k = s.compareto(t); if (k < 0) { System.out.println("s er alfabetisk foran t"); else if (k == 0) { System.out.println("s og t er like"); else { System.out.println("s er alfabetisk bak t"); Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 38

Inneholder en tekst en annen? Anta at s og t er tekstvariable (og at s ikke har verdien null) Inneholder s teksten t? int k = s.indexof(t); if (k < 0) { System.out.println("s inneholder ikke t"); else { System.out.println("s inneholder t"); System.out.println("Posisjon i s: " + k); Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 39

Starter en tekst med en annen? Anta at s og t er tekstvariable (og at s ikke har verdien null) Starter s med teksten t? boolean b = s.startswith(t); if (b) { System.out.println("s starter med t"); else { System.out.println("s starter ikke med t"); Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 40

Slutter en tekst med en annen? Anta at s og t er tekstvariable (og at s ikke har verdien null) Slutter s med teksten t? boolean b = s.endswith(t); if (b) { System.out.println("s ender med t"); else { System.out.println("s ender ikke med t"); Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 41

Fra tall til tekst og omvendt For å konvertere fra tall til tekst: String s1 = String.valueOf(3.14); String s2 = String.valueOf('a'); String s3 = String.valueOf(false); String s4 = "" + 3.14 String s5 = "" + 'a'; String s6 = "" + false; For å konvertere fra tekst til tall: int k = Integer.parseInt(s); double x = Double.parseDouble(s); (og tilsvarende for de andre numeriske datatypene) Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 42