Gå til innhold

Omgjøring fra String til int


Anbefalte innlegg

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
Videoannonse
Annonse
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?

 

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

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å :p

 

Du bør klare å gjøre metode-kroppen 5 linjer kortere, fra 9 til 4 linjer :p

 

split metoden er forresten svært kjekk å kunne, du kommer til å få bruk for den igjen! ;)

Endret av blackbrrd
Lenke til kommentar
  • 2 uker senere...
Gjest Slettet+1374861

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...