INF1000 Behandling av tekster



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

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:

Forelesning inf Java 5

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

Forelesning inf Java 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.

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

INF1000 : Forelesning 5

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

INF1000 Metoder. Marit Nybakken 16. februar 2004

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

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

Forelesning inf Java 5

UNIVERSITETET I OSLO

Blokker og metoder INF1000 (Uke 6) 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

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

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

UNIVERSITETET I OSLO

String-manipulasjon og I/O i Java. INF1000 h14 - Hans Petter Taugbøl Kragset

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

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

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

INF1000: Forelesning 4. Mer om arrayer Metoder

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

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

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

UNIVERSITETET I OSLO

INF Uke 11. Ukeoppgaver oktober 2012

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Java 6. Eksempel med to-dimensjonal array Filbehandling Tekster

UNIVERSITETET I OSLO

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

Inf1000 (Uke 10) HashMap og ArrayList

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

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

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

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

Endret litt som ukeoppgave i INF1010 våren 2004

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

INF Ekstrainnlevering

INF1000-SIKT - Notat om I/O i Java

Ole Christian Lingjærde, 12. september 2013

Sensur-veiledning INF1000 h 2013 (fasit) am - 6. des. 2013

Forelesning inf Java 4

INF1000 : Forelesning 4

INF1010 våren 2018 tirsdag 23. januar

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

2 Om statiske variable/konstanter og statiske metoder.

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

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

INF1000. Marit Nybakken 10. februar 2004

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

UNIVERSITETET I OSLO

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

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

Løsningsforslag til eksamen i INF1000 våren 2006

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

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

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

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

UNIVERSITETET I OSLO

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

Løse reelle problemer

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

"behrozm" Oppsummering - programskisse for traversering av en graf (dybde først) Forelesning i INF februar 2009

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

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

INF1000 Klasser og objekter

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

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

INF1010 Sortering. Marit Nybakken 1. mars 2004

Oblig 4Hybelhus litt mer tips enn i oppgaven

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

UNIVERSITETET I OSLO

Fakultet for informasjonsteknologi, Institutt for datateknikk og informasjonsvitenskap

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

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

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd

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

UNIVERSITETET I OSLO

Seminaroppgaver IN1010, uke 2

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

INF 1000 høsten 2011 Uke september

INF1010 Hashing. Marit Nybakken 8. mars 2004

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

Transkript:

INF1000 Behandling av tekster Marit Nybakken marnybak@ifi.uio.no 23. februar 2004 Tekster Vi kommer nesten aldri utenom å bruke tekststrenger i programmene våre, ikke minst fordi det nesten alltid skal gies en utskrift til brukeren. Vi har tidligere sett hvordan man kan skjøte sammen tekster: String a = toblerone ; String b = kommer i så mange farger ; String c = a+b; Og hvordan man kan sjekke om to tekster er like String a = tomatsuppe, b = potetsuppe ; if(a.equals(b)) System.out.println( Suppene våre er like! ); Vi har til nå sett på en String som en variabel, men den er faktisk litt mer enn det. En String er et objekt av en klasse String. Dette betyr at den inneholder mer enn bare teksten vi la inn i den. Enhver String vi lager oss inneholder også metoder for å gjøre ting med teksten. Et eksempel på en slik metode er equals. Når vi sier a.equals( en tekst ), kaller vi på en metode som ligger 1

inni stringen a. Vi har mange flere slike fine metoder som befinner seg inni String-objektene. Disse kan man kalle på med minstring.metodenavn(). De returnerer resultater, ofte en ny String eller et tall, som vi kan fange opp. Her er et lite utvalg av String-metoder: charat : Plukker ut og returnerer en bokstav av stringen. Bruk stringenmin.charat(indeks); Første bokstav i stringen har indeks 0, andre bokstav har indeks 1, siste har indeks stringenmin.length()-1. substring : Plukker ut og returnerer en del av en string. Bruk stringenmin.substring(startindeks, sluttindeks). Bokstaven som ligger på sluttindeks blir ikke med. equals : Sammenligner stringen med en annen string. Bruk stringenmin.equals(denandrestringen). Returnerer true hvis de er like, false hvis de ikke er like. indexof : Finner og returnerer indeksen til første forekomst av en bokstav eller en string i stringen. Bruk stringenmin.indexof(minchar) eller stringenmin.indexof(enannenstring). Hvis bokstaven eller teksten ikke forekom i teksten, returneres -1. length : returnerer antall bokstaver i stringen. Bruk stringenmin.length(). tolowercase : konverterer alle bokstaver i stringen til små bokstaver og returnerer den nye stringen med bare små bokstaver. Bruk stringenmin.tolowercase(). touppercase : konverterer alle bokstavene i stringen til store bokstaver og returnerer den nye stringen bestående av store bokstaver. Merk: disse to metodene endrer ikke selve stringen, men returnerer en ny string. trim : fjerner blanke tegn (mellomrom, tab, linjeskift) foran og bak stringen. Bruk stringenmin.trim(). Her følger noen eksempler på bruk. Legg merke til hvordan vi kaller metoden i stringen og fanger opp returverdien ved å sette en variabel lik kallet på metoden. String s1 = "KjøttØks "; char c1 = s1.charat(2); // c1 = ø 2

String sub = s1.substring(0,5); // sub = "Kjøtt" boolean lik = s1.equals("orangutang"); // lik = false; int ind = s1.indexof( s ); // ind = 7 int ind2 = s1.indexof( hest ); // ind = -1 (finnes ikke) int lengde = s1.length(); // lengde = 9 String liten = s1.tolowercase(); // liten = "kjøttøks " String stor = s1.touppercase(); // stor = "KJØTTØKS " String trim = s1.trim(); // trim = "KjøttØks" StringTokenizer StringTokenizer brukes når vi har en tekst som skal deles opp i mindre deler og vi har et bestemt skilletegn som skiller mellom de ulike delene. De ulike delene som plukkes ut kalles for tokens. Kanskje vi har lyst til å plukke ut ordene som befinner seg i en tekst. Da sier vi til StringTokenizer at skilletegnet er mellomrom og linjeskift. Skal vi dele opp teksten i setninger, setter vi skilletegnet til punktum. Vi lager oss en StringTokenizer ved å skrive StringTokenizer st = new StringTokenizer(minstring, skilletegn ); Den første parameteren er teksten som skal deles opp, den andre parameteren angir hvilke tegn vi skal skille på, og er frivillig. Sender vi ikke med noen parameter, brukes mellomrom, linjeskift og tab som skilletegn. F.eks. String tekst = Jeg gikk en tur på stien, og følte skogens ro ; // Del i to, skill på komma StringTokenizer tok = new StringTokenizer(tekst,, ); Nå kan vi hente ut de to delene på følgende måte: String del1 = tok.nexttoken(); // Jeg gikk en tur på stien String del2 = tok.nexttoken(); // og følte skogens ro Et siste eksempel, skriv ut et alfabet som på mystisk måte har fått rare tegn 3

inni seg String alfabet = "abcdefg#hijklmno#pqrstuvw#xyzæøå"; // Fjern #-tegnene StringTokenizer st = new StringTokenizer(alfabet, "#"); // så lenge det finnes flere tokens, i alfabetstringen, fortsetter // vi å skrive dem ut while(st.hasmoretokens()) { String t = st.nexttoken(); System.out.print(t); } Ofte er det andre metoder i String-klassen som fungerer bedre til formålet enn det StringTokenizer gjør. Bruk med måte. Argumenter fra kommandolinja public static void main(string[]args) Hva betyr String[]args? Jo, nå har vi lært såpass mye om metoder at vi vet at det er en parameter til main, og at det er en String-array som heter args. Vi kaller jo aldri på main, hvor kommer denne arrayen fra? Vanligvis har vi startet et program ved å skrive java MittProgram Men vi kan skrive flere ting etter MittProgram, f.eks. java MittProgram 23 2.19 Torsk med blåbærfyll Gjør vi det, vil arrayen args inneholde 5 elementer args[0] : 23 args[1] : 2.19 args[2] : Torsk args[3] : med 4

args[4] : blåbærfyll Disse verdiene kan vi bruke videre i programmet vårt. Vi kan definere det slik at programmet vårt skal ta ett argument fra kommandolinjen, f.eks. hvor mange ganger en tekst skal skrives ut på skjermen. Når programmet starter plukker vi ut denne verdien ut av args[0] og bruker den til å bestemme hvor mange ganger en løkke skal gå. Vi ser at også tallene lagres som Stringer i args-arrayen. Hvis vi skal bruke dem som tall, heltall eller flyttall, er vi nødt til å konvertere dem fra tekst til tall først. Heltall kan konverteres slik: int heltall = Integer.parseInt(args[0]); og flyttall slik: double flyttall = Double.parseDouble(args[0]); 5