Programmering i Java http www tisip noJavabok Bruk
Programmering i Java http: //www. tisip. no/Javabok/ Bruk av ferdige klasser Objekter som modeller av virkeligheten Et bankkonto-objekt Objekter og klasser Klassediagram Klassen Konto Tilgangs- og mutasjonsmetoder, mutabel og immutabel Et fullstendig klientprogram En referanse settes lik en annen referanse Datasanering Klassen Random Pakker og import Unntaksobjekter Klassekonstanter- og metoder Klassemetoder for å omforme tekst til tall Å lese data fra brukeren – JOption. Pane Klassen java. lang. String Å tilpasse et program til lokale forhold Utskrift av desimaltall versjon desember 2002 side 2 -3 side 4 side 5 side 6 side 7 -8 side 9 side 10 -14 side 15 side 16 side 17 -18 side 19 -20 side 21 side 22 side 23 side 24 -26 side 27 -29 side 30 -31 side 32 -33 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. Kapittel 3
Objekter som modeller av virkeligheten • modell - en forenkling av virkeligheten. Vil fokusere på bestemte sider ved virkeligheten. • objekt - en modell av en ting som problemet vi skal løse, handler om. – fokus på kunnskap, objektet vet en del ting om seg selv: • eksempler på objekter: – Et bankkonto-objekt vet nummeret sitt, hvem som eier kontoen og saldoen. Det må kunne håndtere innskudd og uttak. – En student vet sitt eget studentnummer, sine egne karakterer, navn, fødselsdato og adresse. Han vet hvordan han skal komme seg til studiestedet, og hvordan han skal løse eksamensoppgavene. – Et møte vet hvor det holder til, hvem som skal delta, når det starter og når det er planlagt avsluttet. Etter en tid vet det også hvem som deltok, og når det virkelig sluttet. • ikke akkurat som i virkeligheten, men dette er modeller, og modeller er ikke miniatyrer av virkeligheten Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 2
Objekter i virkeligheten og i programmering • Et objekt i en objektorientert modell er vesensforskjellige fra det virkelige objektet som det er en modell av. • Modellobjektet har – mye kunnskap om seg selv – ansvar for å utføre visse oppgaver. • Dette er uavhengig av om det virkelige objektet er levende, dødt eller abstrakt. • Vi tar likevel nesten alltid utgangspunkt i de virkelige objektene, når vi skal lage modellobjektene. • Når vi i fortsettelsen snakker om objekter, mener vi modellobjektene. Dersom vi ønsker å referere til de virkelige objektene, sier vi det i klartekst. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 3
Et bankkonto-objekt faktakunnskap (egenskaper) finn kontonr innskudd finn navn 123456676756 Ole Olsen 2300, 50 uttak finn saldo oppgaver (atferd) Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 4
Objekter og klasser • Et objekt har – en tilstand: en situasjon i livet til objektet, der objektet tilfredsstiller en betingelse, gjennomfører en aktivitet eller venter på at noe skal skje eksempler? – attributter: navngitte egenskaper med definerte verdiområder - eksempler? – identitet: et objekt skiller seg fra alle andre objekter – atferd: den mengden oppgaver (operasjoner) som objektet kan utføre • Innkapsling er en viktig egenskap ved objekter – opplysninger om hvordan en oppgave løses er gjemt inne i objektet – klienten forholder seg kun til den atferden som er definert for objektet • En klasse er en beskrivelse av en mengde objekter som har det til felles, at de har de samme attributtene og samme atferd. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 5
Klassediagram • Klasser illustreres ved hjelp av klassediagram. • Klassediagram er en del av UML (Unified Modeling Language). • En klasse beskriver en datatype. Konto kontonr navn saldo finn. Kontonr finn. Navn finn. Saldo innkudd uttak klassenavn attributter operasjoner Gjør oppgave 2 side 60. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 6
Grensesnittet til et objekt av klassen Konto • Grensesnittet er en beskrivelse av atferden til objektet, det vil si de meldingene som en klient kan sende til objektet. • Operasjonene programmeres som metoder. Metodene i klassen Konto kan beskrives med følgende metodehoder: • • • long finn. Kontonr() Stringfinn. Navn() double finn. Saldo() void innskudd(double beløp) void uttak(double beløp) (formelle) parametre • Metodekroppene inneholder programkoden som ligger bak (implementasjonen), for eksempel oppdatering av saldoen ved uttak. • Parametrene forteller at vi må sende data sammen med meldingene. I dette tilfelle skal to av meldingene ha med en desimalverdi. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 7
Objektet kan sende svar tilbake Sett inn 1000 kroner klient 123456676756 Ole Olsen 2300, 50 ingen returverdi, returtype void tjener Finn saldo kr 3300, 50 klient 123456676756 Ole Olsen 3300, 50 desimaltall returneres, returtype double Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. tjener 8
Tilgangs- og mutasjonsmetoder long finn. Kontonr() String finn. Navn() double finn. Saldo() void innskudd(double beløp) void uttak(double beløp) Tilgangsmetoder, endrer ikke datainnholdet i objektet Mutasjonsmetoder, endrer datainnholdet i objektet Klasser som kun tilbyr tilgangsmetoder kalles immutable klasser (datainnholdet kan ikke forandres). Klasser som tilbyr mutasjonsmetoder kalles mutable klasser (datainnholdet kan forandres). Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 9
Et fullstendig klientprogram class Konto. Test { public static void main(String[] args) { /* Oppretter et objekt av klassen Konto. */ Konto oles. Konto = new Konto(123456676756 L, "Ole Olsen", 2300. 50); /* Setter inn 1000 kroner */ oles. Konto. innskudd(1000. 0); /* Spør objektet om den nye saldoen */ double saldo = oles. Konto. finn. Saldo(); /* Skriver ut saldoen */ System. out. println("Etter innskudd er saldoen lik " + saldo); } } Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 10
Å lage et objekt En klasse skal tilby såkalte konstruktører som gjør det mulig å lage objekter av klassen. parametre Konstruktørhode: Konto(long start. Kontonr, String start. Navn, double start. Saldo) samsvar datatype og rekkefølge Konto oles. Konto = new Konto(123456676756 L, "Ole Olsen", 2300. 50); Vi lager et objekt ved å bruke konstruktøren argumenter Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 11
Objektet i primærminnet 123456676756 Ole Olsen 2300, 50 oles. Konto navn på referanse En referanse er en variabel som inneholder adressen til den plassen der objektet ligger. Vi sier at variabelen tilhører en referansetype. For enkelthets skyld bruker vi variabelnavnet som om det var navnet på objektet, og ikke på en referanse til dette. String er en slik referansetype. De andre datatypene vi hittil har stiftet bekjentskap med tilhører gruppen ”primitive datatyper”. reservert ord for å skape et objekt Konto oles. Konto = new Konto(123456676756 L, "Ole Olsen", 2300. 50); argumenter klassenavn Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 12
Sender en melding til et objekt ved å kalle en metode parameter Metodehode: void innskudd(double beløp) argument Vi bruker metoden for å sende en melding til et bestemt objekt: oles. Konto. innskudd(1000. 0); objekt metodekall Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 13
Typen til argumentet må stemme med parametertypen • Typen behøver ikke være den samme, det er nok at argumentet automatisk kan omformes til parametertypen. • Eksempel: Metoden – void øk. Pris(double økning) • vil akseptere følgende kall: – en. Vare. øk. Prisen(20); // argumentets type er int, omformes automatisk til double – en. Vare. øk. Prisen(12. 50); // argumentets type er double, ingen omforming • Også andre talltyper som er mindre enn double aksepteres som argument. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 14
En referanse settes lik en annen referanse Før: To referanser til hvert sitt konto-objekt oles. Konto 2 oles. Konto Etter at setningen oles. Konto 2 = oles. Konto; er utført: oles. Konto 2 Gjør oppgave 1 -4 side 66. Det eksisterer ikke lenger noen referanse til det andre objektet, det blir derfor fjernet fra primærminnet. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 15
Datasanering • Hva skjer med alle objektene etter hvert? • Blir minnet fullt til slutt dersom man stadig lager nye objekter? • Java bruker en teknikk som kalles automatisk datasanering (engelsk: automatical garbage collection). Med jevne mellomrom rydder Java opp i minnet. Objekter som det ikke lenger eksisterer referanser til, slettes. • Ikke alle programmeringsspråk rydder opp selv. En C++programmerer må for eksempel selv passe på å frigjøre plass som det ikke lenger er behov for. Også Java tilbyr metoder som lar programmereren be om opprydding i spesielle situasjoner. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 16
Klassen Random Et objekt av klassen Random kan generere pseudo-tilfeldige tall random. Gen. next. Int(100) Gi meg et tilfeldig tall i intervallet [0. . 99]! 76 klient tjener, objektet random. Gen Random random. Gen = new Random(frø); int tall = random. Gen. next. Int(grense); Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 17
Programmet ser slik ut import java. util. Random; // OBS! class Test. Random { public static void main(String[] args) { final int grense = 100; // ønsker tall i intervallet [0, 99] final int frø = 17; // frøet bør være et primtall Random random. Gen = new Random(frø); int tall 1 = random. Gen. next. Int(grense); int tall 2 = random. Gen. next. Int(grense); int tall 3 = random. Gen. next. Int(grense); int tall 4 = random. Gen. next. Int(grense); System. out. println( "Her er fire tilfeldige tall i intervallet [0. . " + (grense - 1) + "]: " + tall 1 + " " + tall 2 + " " + tall 3 + " " + tall 4); } } /* Kjøring av programmet: Her er fire tilfeldige tall i intervallet [0. . 99]: 76 20 94 16 Gjør oppgave 1 side 68. */ Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 18
Pakker • Java API’et inneholder mange klasser. De organiseres i pakker. • En pakke er en samling med klasser. Standardpakker: – grafikk, lyd og bilder – kommunikasjon over nettverk – databasehåndtering • Alle klasser tilhører en pakke. – De fleste klassene vi lager vil tilhøre en navnløs pakke. – Klasser til mer allmenn bruk bør ligge i en pakke med navn. • Pakkenavnet må være identisk med navnet på den underkatalogen der klassene i pakken ligger. • Pakkenavnet er en del av klassenavnet, eksempel: java. util. Random • Vi trenger ikke å oppgi pakkenavn for klasser i pakken java. lang. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 19
import-deklarasjonen • I stedet for å skrive det fullstendige klassenavnet hver gang, kan vi sette en import-deklarasjon i begynnelsen av filen: – import java. util. Random; • Kan erstatte klassenavnet med *, da er alle klasser i denne pakken tilgjengelig: – import java. util. *; • Eksempel: import java. util. *; class Test. Random { public static void main(String[] args) {. . . Random random. Gen = new Random(frø); Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 20
Unntaksobjekter • Setningen – int svar = 6 / 0; • kompilerer uten feil. Ved kjøring stopper programmet med følgende melding: Exception in thread "main” java. lang. Arithmetic. Exception: / by zero klassenavn • • Et objekt av en ”exception”-klasse kalles et unntaksobjekt. Unntaksobjekt blir laget når visse feil inntreffer. Unntaksobjekt kastes. Det er mulig å fange dem, og håndtere feilen på en fornuftig måte. (se kap. 11) Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 21
Klassekonstanter og –metoder i Java-biblioteket • • Den mest vanlige måten å programmere på er å lage objekter og sende meldinger til dem. Vi kaller metodene for objektmetoder. Et bibliotek bør imidlertid tilby enkelte metoder av generell natur, såkalte klassemetoder. Disse kan brukes uten å være knyttet til et objekt: – metoder for matematiske beregninger (kvadratrot, sinus, cosinus, etc. ) – metoder for søking og sortering • Klassemetoder er merket med modifikatoren static – Fra klassen java. lang. Math: • public static double sqrt(double tall) • public static double sin(double tall) – Eksempel på bruk: • double kvadratroten = Math. sqrt(15678); • Biblioteket inneholder også mange konstanter, i klassen java. lang. Math: • public static final double PI = 3. 14159265358979323846; – Eksempel på bruk: • double circumference = Math. PI * 2 * radius; Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 22
Klassemetoder for å omforme tekst til tall • Eksempel på bruk: String tekst 1 = "2345"; String tekst 2 = "45. 3"; int tall 1 = Integer. parse. Int(tekst 1); // tolker tekst 1 som heltall double tall 2 = Double. parse. Double(tekst 2); // tolker tekst 2 som desimaltall System. out. println(tall 1 + " " + tall 2); • Utskrift: 2345 45. 3 Gjør oppgaven side 72. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 23
Å lese data fra brukeren Vi bruker klassen javax. swing. JOption. Pane: String lengde. Lest = JOption. Pane. show. Input. Dialog( "Lengde (meter): "); String bredde. Lest = JOption. Pane. show. Input. Dialog( "Bredde (meter): "); JOption. Pane. show. Message. Dialog(null, "Arealet av rektangelet er " + arealet + " kvadratmeter"); Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 24
Her er hele programmet /* * Arealberegning 2. java E. L. 2002 -07 -15 * Leser inn lengde og bredde av et rektangel, deretter beregnes arealet. */ import javax. swing. JOption. Pane; class Arealberegning 2 { public static void main(String[] args) { String lengde. Lest = JOption. Pane. show. Input. Dialog("Lengde (meter): "); String bredde. Lest = JOption. Pane. show. Input. Dialog("Bredde (meter): "); double lengde = Double. parse. Double(lengde. Lest); double bredde = Double. parse. Double(bredde. Lest); double arealet = lengde * bredde; JOption. Pane. show. Message. Dialog(null, "Arealet av rektangelet er " + arealet + " kvadratmeter"); System. exit(0); // OBS! For at programmet skal avsluttes } } /* Eksempeldata: Lengde: 5. 8 m Bredde: 2. 4 m Arealet av rektangelet er 13. 92 kvadratmeter. */ Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 25
Flere meldingsbokser JOption. Pane. show. Message. Dialog(null, "Den enkleste meldingsdialogen"); JOption. Pane. show. Message. Dialog(null, "Viser feilmeldingssymbolet", "Metoden med fire parametre", JOption. Pane. ERROR_MESSAGE); Image. Icon bilde = new Image. Icon("blaa. gif"); JOption. Pane. show. Message. Dialog(null, "En gif-fil med blå firkant", "Metoden med fem parametre", 0, bilde); Gjør oppgave 1 side 74. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 26
En av standardklassene: klassen java. lang. String by = "Trondheim"; er det samme som: Trondheim String by = new String("Trondheim"); by 123456676756 Ole Olsen 2300, 50 oles. Konto skal egentlig være slik: Ole Olsen oles. Konto Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 2300, 50 27
Noen få av klassens nærmere 50 metoder • • • String(String verdi) // konstruktør char. At(int posisjon) // returnerer tegnet på den gitte posisjonen // Posisjonene nummereres fra og med 0. int length() // returnerer antall tegn som teksten består av String to. Lower. Case() // lager ny tekst lik den gamle, alle bokstavene små String to. Upper. Case() // lager ny tekst lik den gamle, alle bokstavene store String trim() // lager ny tekst, blanke foran og bak er fjernet • Metoder som søker etter et enkelt tegn eller en delstreng. Søking forfra: – public int index. Of(int tegn) – public int index. Of(int tegn, int fra. Indeks) – public int index. Of(String del. Streng) • Metoder som søker etter et enkelt tegn eller en delstreng. Søking bakfra: – – public int last. Index. Of(int tegn) public int last. Index. Of(int tegn, int fra. Indeks) public int last. Index. Of(String del. Streng, int fra. Indeks) Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 28
import javax. swing. JOption. Pane; Eksempel på bruk av klassen String class Test. String { public static void main(String[] args) throws Exception{ Anne Katrine Ås String tekst = JOption. Pane. show. Input. Dialog("Skriv en tekst: "); String uten. Blanke. Foran. Ogbak = tekst. trim(); tekst String resultat = "Blanke fjernet: " + uten. Blanke. Foran. Ogbak; String store = tekst. to. Upper. Case(); resultat = resultat + "n. Bare store bokstaver: " + store; Anne Katrine Ås String små = tekst. to. Lower. Case(); resultat = resultat + "n. Bare små bokstaver: " + små; char første. Bokstav = tekst. char. At(0); uten. Blanke. Foran. Og. Bak resultat = resultat + "n. Første bokstav: " + første. Bokstav; char andre. Bokstav = tekst. char. At(1); Blanke fjernet: … resultat = resultat + "n. Andre bokstav: " + andre. Bokstav; int ant. Tegn = tekst. length(); resultat = resultat + "n. Lengden til teksten: " + ant. Tegn; resultat JOption. Pane. show. Message. Dialog(null, resultat); En ny og større streng lages i hver System. exit(0); tilordningssetning som har resultat } på venstre side av tilordningstegnet. A n } /* Utskriftvindu: første. Bokstav andre. Bokstav ANNE KATRINE ÅS Blanke fjernet: Anne Katrine Ås Bare store bokstaver: ANNE KATRINE ÅS 15 store Bare små bokstaver: anne katrine ås Første bokstav: A ant. Tegn anne katrine ås Andre bokstav: n Lengden til teksten: 15 Gjør oppgave 1 -3 side 79. */ små Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 29
Å tilpasse et program til lokale forhold • • Med formatering mener vi hvordan for eksempel et tall vises fram på skjermen eller på annen utskriftsenhet. Formatering berører ikke verdien i seg selv. Anta at variabelen tall inneholder verdien 35645, 4. Tallverdien kan skrives ut (formateres) på flere måter: – – • • 35, 645. 4 35 645, 40 35645 Formatering av tall er en liten del av det vi kaller ”tilpasning til lokale forhold”. Andre tilpasninger er myntenhet og datoformat. I Windows setter vi dette i ”Regionale innstillinger”. I Java kan vi la programmet følge det miljøet programmet kjører i (dvs. regionale innstillinger), eller vi kan selv sette lokalisering (= språk og land). Klassen java. util. Locale hjelper oss med dette: Locale norsk = new Locale("no", "NO"); Locale. set. Default(norsk); • Kun bestemte klasser tar hensyn til lokalisering. Eksempel på setning som ikke tar hensyn til lokalisering: System. out. println(tall); Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 30
Eksempel på lokalisering import java. util. Locale; import java. text. Number. Format; class Test. Formatering { public static void main(String[] args) { Locale svensk = new Locale("sv", "SE"); Locale. set. Default(svensk); double tall = 0. 757; Number. Format tallformat = Number. Format. get. Number. Instance(); Number. Format prosentformat = Number. Format. get. Percent. Instance(); Number. Format pengeformat = Number. Format. get. Currency. Instance(); System. out. println("Som desimaltall: " + tallformat(tall)); System. out. println("Som prosent: " + prosentformat(tall)); System. out. println("Som beløp: " + pengeformat(tall)); } } /* Kjøring av programmet: Som desimaltall: 0, 757 Som prosent: 76% Som beløp: 0, 76 kr */ Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 31
Utskrift av desimaltall • Vi bruker klassen java. text. Decimal. Format. • Eksempel: Decimal. Format formatet = new Decimal. Format("###0. 00"); String tekst = formatet. format(13. 4); System. out. println(tekst); tekst = formatet. format(-3456789. 4); System. out. println(tekst); Vis minst ett siffer til venstre for desimalskillet, og alltid akkurat to sifre til høyre for desimalskillet. • gir utskriften (merk desimalkomma!) 13, 40 -3456789, 40 • Formatet bygges opp av koder, én kode for hver posisjon: 0 null: Skriv alltid ett siffer på denne plassen. # skigard: Skriv ett siffer på denne plassen, men ikke dersom dette sifferet er en null i begynnelsen eller slutten av tallet. . punktum: Her skal desimalskillet være. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 32
Koder for å lage mønster til Decimal. Format-konstruktøren kode tolkes som eksempel tallverdi og utskrift 0 Et siffer ” 0000. 00” 6, 7 blir 0006, 70 # Et siffer, men vis det ikke dersom det er en null i begynnelsen eller slutten av tallet. ”####. ##” 6, 7 blir 6, 7 . Plassering av desimalskille (komma på norsk). se over , Plassering av gruppeseparator (mellomrom på norsk). “###, ###. ##” Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003. 56786, 7 blir 56 786, 7 33
- Slides: 33