350 likes | 554 Views
Bruk av ferdige klasser. Objekter som modeller av virkeligheten side 2-3 Et bankkonto-objekt side 4 Objekter og klasser side 5 Klassediagram side 6 Klassen Konto side 7-8 Tilgangs- og mutasjonsmetoder, mutabel og immutabel side 9
E N D
Bruk av ferdige klasser Objekter som modeller av virkeligheten side 2-3Et bankkonto-objekt side 4Objekter og klasser side 5Klassediagram side 6Klassen Konto side 7-8Tilgangs- og mutasjonsmetoder, mutabel og immutabel side 9 Et fullstendig klientprogram side 10-14En referanse settes lik en annen referanse side 15Datasanering side 16Klassen Random side 17-18Unntaksobjekter side 19Klassekonstanter- og metoder i Java-biblioteket side 20Klassemetoder for å omforme tekst til tall side 21Pakker og import side 22-24Å lese data fra brukeren – JOptionPane side 25-27Klassen java.lang.String side 28-30Å tilpasse et program til lokale forhold side 31Formatering av desimaltall og tidspunkter side 32-35 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Et bankkonto-objekt faktakunnskap(egenskaper) finn kontonr 123456676756 Ole Olsen 2300,50 innskudd finn navn uttak finn saldo oppgaver(atferd) Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Klassediagram • Klasser illustreres ved hjelp av klassediagram. • Klassediagram er en del av UML (Unified Modeling Language). • En klasse beskriver en datatype. klassenavn Konto kontonr navn saldo attributter finnKontonr finnNavn finnSaldo innkudd uttak operasjoner Gjør oppgave 2 side 82. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
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 finnKontonr() • StringfinnNavn() • double finnSaldo() • void innskudd(double beløp) • void uttak(double beløp) • 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. (formelle) parametre parametre Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Objektet kan sende svar tilbake 123456676756 Ole Olsen 2300,50 Sett inn 1000 kroner ingen returverdi, returtype void klient tjener Finn saldo 123456676756 Ole Olsen 3300,50 kr 3300,50 desimaltall returneres, returtype double klient tjener Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Tilgangs- og mutasjonsmetoder long finnKontonr() StringfinnNavn() double finnSaldo() void innskudd(double beløp) void uttak(double beløp) Tilgangsmetoder,endrer ikke datainnholdet i objektet Mutasjonsmetoder,endrer datainnholdet i objektet Klasser som kuntilbyr tilgangsmetoder kalles immutableklasser (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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Et fullstendig klientprogram class KontoTest { public static void main(String[] args) { /* Oppretter et objekt av klassen Konto. */ Konto olesKonto = new Konto(123456676756L, "Ole Olsen", 2300.50); /* Setter inn 1000 kroner */ olesKonto.innskudd(1000.0); /* Spør objektet om den nye saldoen */ double saldo = olesKonto.finnSaldo(); /* 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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Å 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 startKontonr, String startNavn, double startSaldo) samsvar datatype og rekkefølge Konto olesKonto = new Konto(123456676756L, "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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Objektet i primærminnet 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”. 123456676756 Ole Olsen 2300,50 olesKonto navn på referanse reservert ord for å skape et objekt Konto olesKonto = new Konto(123456676756L, "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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
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: olesKonto.innskudd(1000.0); metodekall objekt Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
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 økPris(double økning) • vil akseptere følgende kall: • enVare.økPrisen(20); // argumentets type er int, omformes automatisk til double • enVare.økPrisen(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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
En referanse settes lik en annen referanse Før: To referanser til hvert sitt konto-objekt olesKonto2 olesKonto Etter at setningen olesKonto2 = olesKonto; er utført: Gjør oppgave 1-4 side 88. olesKonto2 olesKonto 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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Klassen Random Et objekt av klassen Random kan generere pseudo-tilfeldige tall randomGen.nextInt(100) Gi meg et tilfeldig tall i intervallet [0..99]! 76 klient tjener, objektet randomGen java.util.Random randomGen = new java.util.Random(frø); int tall = randomGen.nextInt(grense); Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Programmet ser slik ut class TestRandom { 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 java.util.Random randomGen = new java.util.Random(frø); int tall1 = randomGen.nextInt(grense); int tall2 = randomGen.nextInt(grense); int tall3 = randomGen.nextInt(grense); int tall4 = randomGen.nextInt(grense); System.out.println( "Her er fire tilfeldige tall i intervallet [0.." + (grense - 1) + "]: " + tall1 + " " + tall2 + " " + tall3 + " " + tall4); } } /* Kjøring av programmet: Her er fire tilfeldige tall i intervallet [0..99]: 76 20 94 16 */ Gjør oppgave 1 side 91. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Unntaksobjekter • Setningen • int svar = 6 / 0; • kompilerer uten feil. Ved kjøring stopper programmet med følgende melding:Exceptionin thread "main” java.lang.ArithmeticException: / by zero • 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) klassenavn Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
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 • Fraklassen 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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Klassemetoder for å omforme tekst til tall • Eksempel på bruk: String tekst1 = "2345"; String tekst2 = "45.3"; int tall1 = Integer.parseInt(tekst1); // tolker tekst1 som heltall double tall2 = Double.parseDouble(tekst2); // tolker tekst2 som desimaltall System.out.println(tall1 + " " + tall2); • Utskrift: 2345 45.3 Gjør oppgaven side 93. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
import-deklarasjonen for klasser • 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 TestRandom { public static void main(String[] args) { ..... Random randomGen = new Random(frø); Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
import-deklarasjonen for klassekonstanter og -metoder • Kan gjøre klassekonstanter og –metoder tilgjengelig med import static, eksempel: import static java.lang.Math.*; // alle klassekonstanter og -metoder import static java.lang.Integer.parseInt; // kun parseInt class TestImportStatic { public static void main(String[] args) { System.out.println("Den matematiske konstanten pi er lik " + PI); System.out.println("Den matematiske konstanten e er lik " + E); int tall = parseInt("-345"); System.out.println("Tall er lik " + tall); int maks = Integer.MAX_VALUE; // denne konstanten er ikke importert System.out.println("Største heltallsverdi er " + maks); } } Utskriften ser slik ut: Den matematiske konstanten pi er lik 3.141592653589793 Den matematiske konstanten e er lik 2.718281828459045 Tall er lik -345 Største heltallsverdi er 2147483647 import static benyttes i boka kun for JOptionPane Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Å lese data fra brukeren Vi bruker klassen javax.swing.JOptionPane: String lengdeLest = JOptionPane.showInputDialog( "Lengde (meter): "); String breddeLest = JOptionPane.showInputDialog( "Bredde (meter): "); JOptionPane.showMessageDialog(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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Her er hele programmet /* * Arealberegning2.java E.L. 2004-03-17 * * Leser inn lengde og bredde av et rektangel, deretter beregnes arealet. */ import static javax.swing.JOptionPane.*; class Arealberegning2 { public static void main(String[] args) { String lengdeLest = showInputDialog("Lengde (meter): "); String breddeLest = showInputDialog("Bredde (meter): "); double lengde = Double.parseDouble(lengdeLest); double bredde = Double.parseDouble(breddeLest); double arealet = lengde * bredde; showMessageDialog(null, "Arealet av rektangelet er " + arealet + " kvadratmeter"); } } /* 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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Flere meldingsbokser JOptionPane.showMessageDialog(null, "Den enkleste meldingsdialogen"); JOptionPane.showMessageDialog(null, "Viser feilmeldingssymbolet", "Metoden med fire parametre", JOptionPane.ERROR_MESSAGE); ImageIcon bilde = new ImageIcon("blaa.gif"); JOptionPane.showMessageDialog(null, "En gif-fil med blå firkant", "Metoden med fem parametre", 0, bilde); Gjør oppgave 1 side 98. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
En av standardklassene: klassen java.lang.String String by = "Trondheim"; er det samme som: String by = new String("Trondheim"); Trondheim by 123456676756 2300,50 123456676756 Ole Olsen 2300,50 skal egentlig være slik: Ole Olsen olesKonto olesKonto Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Noen få av klassens nærmere 50 metoder • String(String verdi) // konstruktør • char charAt(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 toLowerCase() // lager ny tekst lik den gamle, alle bokstavene små • String toUpperCase() // 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 indexOf(int tegn) • public int indexOf(int tegn, int fraIndeks) • public int indexOf(String delStreng) • Metoder som søker etter et enkelt tegn eller en delstreng. Søking bakfra: • public int lastIndexOf(int tegn) • public int lastIndexOf(int tegn, int fraIndeks) • public int lastIndexOf(String delStreng) • public int lastIndexOf(String delStreng, int fraIndeks) Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Eksempel på bruk av klassen String import static javax.swing.JOptionPane.*; class TestString { public static void main(String[] args) { String tekst = showInputDialog("Skriv en tekst: "); String utenBlankeForanOgbak = tekst.trim(); String resultat = "Blanke fjernet: " + utenBlankeForanOgbak; String store = tekst.toUpperCase(); resultat = resultat + "\nBare store bokstaver: " + store; String små = tekst.toLowerCase(); resultat = resultat + "\nBare små bokstaver: " + små; char førsteBokstav = tekst.charAt(0); resultat = resultat + "\nFørste bokstav: " + førsteBokstav; char andreBokstav = tekst.charAt(1); resultat = resultat + "\nAndre bokstav: " + andreBokstav; int antTegn = tekst.length(); resultat = resultat + "\nLengden til teksten: " + antTegn; showMessageDialog(null, resultat); } } /* Utskriftvindu: Blanke fjernet: Anne Katrine Ås Bare store bokstaver: ANNE KATRINE ÅS Bare små bokstaver: anne katrine ås Første bokstav: A Andre bokstav: n Lengden til teksten: 15 */ Anne Katrine Ås tekst Anne Katrine Ås utenBlankeForanOgBak Blanke fjernet: … resultat En ny og større streng lages i hvertilordningssetning som har resultatpå venstre side av tilordningstegnet. A n ANNE KATRINE ÅS førsteBokstav andreBokstav 15 store anne katrine ås antTegn Gjør oppgave 1-3 side 103. små Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Å 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,4 • 35 645,40 • 35645 • Formatering av tall er en liten del av det vi kaller ”tilpasningtillokaleforhold”. 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.setDefault(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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Formatering av desimaltall import java.util.Locale; import java.text.NumberFormat; class TallFormatering { public static void main(String[] args) { Locale svensk = new Locale("sv", "SE"); Locale.setDefault(svensk); double tall = 0.757; NumberFormat tallformat = NumberFormat.getNumberInstance(); NumberFormat prosentformat = NumberFormat.getPercentInstance(); NumberFormat pengeformat = NumberFormat.getCurrencyInstance(); System.out.println("Som desimaltall: " + tallformat.format(tall)); System.out.println("Som prosent: " + prosentformat.format(tall)); System.out.println("Som beløp: " + pengeformat.format(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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Formatering av desimaltall, forts. • Vi bruker klassen java.text.DecimalFormat. • Eksempel: DecimalFormat formatet = new DecimalFormat("###0.00"); String tekst = formatet.format(13.4); System.out.println(tekst); tekst = formatet.format(-3456789.4); System.out.println(tekst); • 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. Vis minst ett siffer til venstre for desimalskillet, og alltid akkurat to sifre til høyre for desimalskillet. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Koder for å lage mønster til DecimalFormat-konstruktøren Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.
Formatering av tidspunkter import java.util.Date; import java.text.DateFormat; class DatoFormatering { public static void main(String[] args) { Date nå = new Date(); // objektet inneholder informasjon om dato og klokkeslett /* Viser datoen på to forskjellige måter */ DateFormat dFormatShort = DateFormat.getDateInstance(DateFormat.SHORT); DateFormat dFormatLong = DateFormat.getDateInstance(DateFormat.LONG); System.out.println("Dato, format SHORT: " + dFormatShort.format(nå)); System.out.println("Dato, format LONG: " + dFormatLong.format(nå)); /* Viser klokkeslettet på to forskjellige måter */ DateFormat tFormatShort = DateFormat.getTimeInstance(DateFormat.SHORT); DateFormat tFormatLong = DateFormat.getTimeInstance(DateFormat.FULL); System.out.println("Klokkeslett, format SHORT: " + tFormatShort.format(nå)); System.out.println("Klokkeslett, format LONG: " + tFormatLong.format(nå)); } } /* Kjøring av programmet: Dato, format SHORT: 18.02.04 Dato, format LONG: 18. februar 2004 Klokkeslett, format SHORT: 10:46:26 Klokkeslett, format LONG: kl 10.46 CET */ Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.