LiengEn Skrevet 29. november 2007 Del Skrevet 29. november 2007 Hei. Jeg lager en classe Dato med feltvariablene dag, maaned, aar (alle int). I oppgaven står det at jeg skal lage en konstrukør med en String som parameter, på formatet dato.måned.år f.eks 29.11.2007 Konstuktøren jeg har laget (som kaster formatexception): public Dato (String dato) { int index1 = dato.indexOf("."); int index2 = dato.indexOf(".", index1+1); int index3 = dato.indexOf(".", index2+1); String a = dato.substring(0, index1); String b = dato.substring(index1+1, index2); String c = dato.substring(index3+1); dag = Integer.parseInt(a); maaned = Integer.parseInt(b); aar = Integer.parseInt(c); } Er jeg helt ute på jordet her eller? Lenke til kommentar
___ Skrevet 29. november 2007 Del Skrevet 29. november 2007 Hei. Jeg lager en classe Dato med feltvariablene dag, maaned, aar (alle int). I oppgaven står det at jeg skal lage en konstrukør med en String som parameter, på formatet dato.måned.år f.eks 29.11.2007Konstuktøren jeg har laget (som kaster formatexception): public Dato (String dato) { int index1 = dato.indexOf("."); int index2 = dato.indexOf(".", index1+1); int index3 = dato.indexOf(".", index2+1); String a = dato.substring(0, index1); String b = dato.substring(index1+1, index2); String c = dato.substring(index3+1); dag = Integer.parseInt(a); maaned = Integer.parseInt(b); aar = Integer.parseInt(c); } Er jeg helt ute på jordet her eller? Du kunne spart mye kode hvis du hadde benyttet split()-metoden til String-klassen. Ellers er måten du konverterer fra String til int på grei nok. Werner Lenke til kommentar
blackbrrd Skrevet 29. november 2007 Del Skrevet 29. november 2007 (endret) Utfordring til LiengEn, bruk split metoden! Javadoc på split metoden http://java.sun.com/j2se/1.4.2/docs/api/ja...va.lang.String) Javadoc til regexp http://java.sun.com/j2se/1.4.2/docs/api/ja...attern.html#sum Hintet er at . er "Any character (may or may not match line terminators)" Du kan escape tegn i en regexp ved å legge en \ foran. \. er ikke en gyldig escape sequence \ kan escapes ved å skrive \\ Du må med andre ord escape først for java sin del, og så escape for regexp sin del, både java og regexp bruker \ som escape tegn.. Tror jeg skal ha hintet nok nå Du bør klare å gjøre metode-kroppen 5 linjer kortere, fra 9 til 4 linjer split metoden er forresten svært kjekk å kunne, du kommer til å få bruk for den igjen! Endret 29. november 2007 av blackbrrd Lenke til kommentar
LiengEn Skrevet 29. november 2007 Forfatter Del Skrevet 29. november 2007 Takker for supre tips! Alt funker bedre nå ja: public Dato (String dato) { String[] temp = dato.split("\\."); dag = Integer.parseInt(temp[0]); maaned = Integer.parseInt(temp[1]); aar = Integer.parseInt(temp[2]); } Lenke til kommentar
Gjest Slettet+1374861 Skrevet 13. desember 2007 Del Skrevet 13. desember 2007 kan på samme måte benytte regex til å avgjøre om formatet i det heletatt stemmer og evt. kaste en Exception hvis du ser at formatet er feil FØR du begynner og parse og herje (som da vil kaste en mer uforståelig feil iforhold til en du kan definere selv). feks: String dato = "29.11.2007"; if(Pattern.compile("[0-9]{2}\\.[0-9]{2}\\.[0-9]{4}").matcher(dato).matches()) { // Do something } else { throw new UlovligDatoFormatException("Feil format"); } Evt bruke {1,2} og {1,4} på henholdsvis dag/måned og år hvis du ikke krever ledende nuller... Lenke til kommentar
Harkonnen Skrevet 15. desember 2007 Del Skrevet 15. desember 2007 Eller så kan du sikkert bruke SimpleDateFormater Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå