Forelesning inf Java 5

Like dokumenter
Forelesning inf Java 5

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 (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 : Forelesning 4

INF1000 (Uke 6) Mer om metoder, tekster

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

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

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

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

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

Forelesning inf Java 5

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.

Blokker og metoder INF1000 (Uke 6) Metoder

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

Java 6. Eksempel med to-dimensjonal array Filbehandling Tekster

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

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

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

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

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

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

En klasse er noe - en metode gjør noe (! / # <= (! * +!! ",-' %. "- -/ %.!#) )! " 0'%! * *$! "1-)) '' % '. 22!'( 7/ /! * 2 2! "*"% 8"%% 9 - -!

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 5) Mer om løkker, arrayer og metoder

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: Forelesning 4. Mer om arrayer Metoder

Ole Christian Lingjærde, 12. september 2013

Forelesning inf Java 4

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

Inf1000 uke 5 18.sept. 2007

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

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

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

Inf1000 uke sept 2011

Inf1000 uke sept 2011

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

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

Repetisjon INF 1000 våren 2006

Inf1000, uke 5 19 sept. 2006

Mer om arrayer Metoder

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

INF1000 Behandling av tekster

Oversikt. INF1000 Uke 5. Hva er for-løkker - repetisjon. Spørsmål forrige uke. Svar på spm. fra forrige uke. Litt mer om arrayer.

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

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

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

Oversikt. INF1000 Forelesning 6. Variable Deklarasjon. Variabel en plass i lageret int radius;

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

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

INF1000 : Forelesning 3

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

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

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

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

Eksempel: Body Mass Index (BMI)

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

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

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

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

INF 1000 høsten 2011 Uke september

Inf1000 (Uke 5) Arrayer, filer og tekst

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

INF1000 undervisningen INF 1000 høsten 2011 Uke september

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

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

INF1000 : Forelesning 1 (del 2)

UNIVERSITETET I OSLO

INF1000 Uke 4. Innlesning fra terminal. Uttrykk og presedens. Oversikt

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

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

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

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

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

UNIVERSITETET I OSLO

Forelesning inf Java 3

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

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

Forelesning inf Java 3

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

UNIVERSITETET I OSLO

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

Forelesning inf Java 1

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

Løse reelle problemer

UNIVERSITETET I OSLO

Endret litt som ukeoppgave i INF1010 våren 2004

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

INF1000 Uke 3. Innlesning fra terminal. Uttrykk og presedens. Oversikt. Litt repetisjon Blokker og forgreininger

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Transkript:

Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen til et Java-program Java-programmer består av en eller flere klasser (+ importsetninger) Klassene kan inneholde: Variabler Metoder Metodene kan inneholde: Variabler Programinstruksjoner Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 2

Ole Chr. Lingjærde 2 Fra klasse til objekter gr class Gruppe static-variable static-metoder Gruppe gr = new Gruppe(); static-variable static-metoder objekt-variable objekt-metoder Ved å bruke new kan vi lage vilkårlig mange "kopier" (eller "instanser") av en klasse, hver med sitt eget sett av objekt-variable og metoder som bare "ser" objektets egne variable. Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 3 Hvorfor bruke metoder? (Det fungerer jo fint uten...) Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 4

Ole Chr. Lingjærde 3 Mer lettlest kode svar = beregnx(); svar2 = beregny(); int beregnx() { double beregny() { Bruk av metoder gjør at programmet blir delt opp i mindre kodebiter som kan forstås hver for seg. Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 5 Gjenbruk av kode svar = beregnx(); svar2 = beregnx(); svar3 = beregnx(); int beregnx() { I stedet for å ha samme kodebit liggende mange steder, samler vi den i en metode og kaller på denne ved behov Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 6

Ole Chr. Lingjærde 4 Lettere å endre programmet senere int beregnx() { Når en kodebit ligger mange steder, er det mye jobb å endre den senere. Med metoder blir vedlikehold enklere. Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 7 Hvordan får vi brukt en metode? (dvs hvordan "kaller vi på den") Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 8

Ole Chr. Lingjærde 5 Hvordan kalle på en metode Tenk deg at vi vil kalle på metoden beregnx() Det sentrale spørsmålet er hvor kallet på metoden skjer fra. Hvis kallet gjøres inne i samme objekt: beregnx() Eller this.beregnx() Hvis kallet gjøres fra et annet sted: p.beregnx(); Og da må vi først ha laget et objekt av klassen og sørget for at p peker på objektet Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 9 Metodekall En metode kan kreve input og den kan returnere en verdi, men ingen av delene er nødvendig. I enkleste tilfelle er det ingen input og ingen output. Når vi benytter en metode sier vi at vi kaller på metoden. Kall på metode uten input (=parametre) - eksempel: minmetode(); Kall på metode med input (=parametre) - eksempel: minmetode(34.2, 53, 6); Kall på metode som returnerer en verdi - eksempel: int alder = minmetode(25.3, 52); Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 10

Metodedeklarasjoner En metode er en navngitt blokk med instruksjoner som vi kan få utført hvor som helst i et program ved å angi metodens navn. Vi definerer (deklarerer) metoder etter følgende mønster: mer om denne senere beskrivelse av hva slags output metoden gir, f.eks. void, int, double, char,... modifikatorer returverditype minmetode (parametre) { instruksjon 1; instruksjon 2;... instruksjon n; et navn som vi velger beskrivelse av hva slags input metoden skal ha - gis i form av variabel-deklarasjoner separert av komma Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 11 Plassering i programmet Vi plasserer metodene i en egen klasse (eller flere klasser): Filen MittProgram.java : class MittProgram { public static void main(string[] args) { Hjelpeklasse hj = new Hjelpeklasse(); hj.minmetode(); class Hjelpeklasse { void minmetode() {... innholdet i metoden... Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 12 Ole Chr. Lingjærde 6

Ole Chr. Lingjærde 7 Metode uten parametre/returverdi Følgende metode skriver ut fire linjer på skjermen: void skrivstjerner () { String s = "****"; System.out.println(s); System.out.println(s+s); System.out.println(s+s+s); System.out.println(s+s+s+s); Forklaring: void forteller at metoden ikke gir noe output. skrivstjerner er det navnet vi har valgt å gi metoden Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 13 Eksempel på bruk class Stjerner { public static void main (String[] args) { Hjelpeklasse hj = new Hjelpeklasse(); hj.skrivstjerner(); class Hjelpeklasse { void skrivstjerner() { String s = "****"; System.out.println(s); System.out.println(s+s); System.out.println(s+s+s); System.out.println(s+s+s+s); Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 14

Ole Chr. Lingjærde 8 Kompilering og kjøring > javac Stjerner.java > java Stjerner **** ******** ************ **************** Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 15 Metode med returverdi Følgende metode leser et positivt desimaltall fra terminal og returnerer det: double lespositivttall() { In tastatur = new In(); double x; do { System.out.println("Gi et positivt tall: "); x = tastatur.indouble(); while (x <= 0); return x; Forklaring: return x betyr at metoden slutter å eksekvere og at verdien til variabelen x returneres til kallstedet. Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 16

Ole Chr. Lingjærde 9 Eksempel på bruk import easyio.*; class LesPositivtTall { public static void main (String[] args) { Hjelpeklasse hj = new Hjelpeklasse(); double tall = hj.lespositivttall(); System.out.println("Tallet var " + tall); class Hjelpeklasse { double lespositivttall () { In tastatur = new In(); double x; do { System.out.print("Gi et positivt tall: "); x = tastatur.indouble(); while (x <= 0); return x; Test programmet Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 17 Todimensjonale arrayer tabell int[][] tabell = new int[10][50] 0 1 0 1 2 3... 49 9 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 18

Ole Chr. Lingjærde 10 Oppgave: Fyll en array med samme verdi int[][] a 0 1 2 3 0 1 2 3 4 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 19 Løsning class FillArray { public static void main(string[] args) { int[][] a = new int[4][5]; for (int i=0; i<4; i++) { for (int j=0; j<5; j++) { a[i][j] = 2; Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 20

Ole Chr. Lingjærde 11 Oppgave: Fyll diagonalen med verdier int[][] a 0 1 2 3 0 1 2 3 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 21 Løsning 1 class FillDiagonal { public static void main(string[] args) { int[][] a = new int[4][4]; for (int i=0; i<4; i++) { for (int j=0; j<4; j++) { if (i == j) a[i][j] = 1; Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 22

Ole Chr. Lingjærde 12 Løsning 2 class FillDiagonal2 { public static void main(string[] args) { int[][] a = new int[4][4]; for (int i=0; i<4; i++) { a[i][i] = 1; Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 23 Oppgave: bytte rader og kolonner int[][] a int[][] b 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 24

Ole Chr. Lingjærde 13 Innsikt a[1][0] b[0][1] Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 25 Innsikt a[1][1] b[1][1] Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 26

Ole Chr. Lingjærde 14 Innsikt a[1][2] b[2][1] Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 27 Innsikt a[1][3] b[3][1] Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 28

Ole Chr. Lingjærde 15 Løsning class Transponer { public static void main(string[] args) { int[][] a = new int[4][4]; int[][] b = new int[4][4]; <Fyll opp a med verdier>; for (int i=0; i<4; i++) { for (int j=0; j<4; j++) { b[i][j] = a[j][i]; Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 29 class Image { public static void main (String[] args) { int[][] a = new int[21][21]; a[0][10] = 1; for (int i=1; i<21; i++) { for (int j=1; j<20; j++) { if (a[i-1][j-1] > 0) a[i][j] = 1; System.out.println(); for (int i=0; i<21; i++) { for (int j=0; j<21; j++) { if (a[i][j] > 0) System.out.print("o"); else System.out.print(" "); System.out.println(); Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 30

Ole Chr. Lingjærde 16 0 0 20 20 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 31 0 0 20 a[0][10] = 1; 20 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 32

Ole Chr. Lingjærde 17 0 0 20 for (int i=1; i<20; i++) { for (int j=1; j<20; j++) { if (a[i-1][j-1] > 0) a[i][j] = 1; 20 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 33 0 0 20 for (int i=1; i<20; i++) { for (int j=1; j<20; j++) { if (a[i-1][j-1] > 0) a[i][j] = 1; 20 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 34

Ole Chr. Lingjærde 18 0 0 20 for (int i=1; i<20; i++) { for (int j=1; j<20; j++) { if (a[i-1][j-1] > 0) a[i][j] = 1; 20 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 35 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 36

Ole Chr. Lingjærde 19 class Image2 { public static void main (String[] args) { int[][] a = new int[21][21]; a[0][10] = 1; for (int i=1; i<21; i++) { for (int j=1; j<20; j++) { if (a[i-1][j-1] > 0) a[i][j] = 1; if (a[i-1][j+1] > 0) a[i][j] = 1; System.out.println(); for (int i=0; i<21; i++) { for (int j=0; j<21; j++) { if (a[i][j] > 0) System.out.print("o"); else System.out.print(" "); System.out.println(); Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 37 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 38

Ole Chr. Lingjærde 20 class Image3 { public static void main (String[] args) { int[][] a = new int[21][21]; a[0][10] = 1; for (int i=1; i<21; i++) { for (int j=1; j<20; j++) { if (a[i-1][j-1] > 0) a[i][j] = 1; if (a[i-1][j+1] > 0) a[i][j] = 1; if (a[i-1][j-1] > 0 && a[i-1][j+1] > 0){ a[i][j] = 0; System.out.println(); for (int i=0; i<21; i++) { for (int j=0; j<21; j++) { if (a[i][j] > 0) System.out.print("o"); else System.out.print(" "); System.out.println(); Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 39 Ole Chr. Lingjærde Institutt for informatikk, 12. september 2013 40

Ole Chr. Lingjærde 21 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, 26. september 2013 41 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, 26. september 2013 42

Ole Chr. Lingjærde 22 Unicode (http://www.unicode.org).... Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 43 Andre eksempler på Unicode-tegn Tibetanske tegn Musikksymboler Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 44

Ole Chr. Lingjærde 23 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, 26. september 2013 45 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, 26. september 2013 46

Ole Chr. Lingjærde 24 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 Generelt: s.substring(index1, index2) 0 1 2 3 4 P a r i s s.substring(1,4) 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, 26. september 2013 47 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, 26. september 2013 48

Ole Chr. Lingjærde 25 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, 26. september 2013 49 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, 26. september 2013 50

Ole Chr. Lingjærde 26 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, 26. september 2013 51 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, 26. september 2013 52

Ole Chr. Lingjærde 27 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, 26. september 2013 53 Oppgave Metode som returnerer summen av alle verdiene i arrayen x: double beregnsum (double[] x) { Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 54

Ole Chr. Lingjærde 28 Løsningsforslag 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, 26. september 2013 55