jemartinsen81 Skrevet 15. oktober 2007 Skrevet 15. oktober 2007 (endret) Dette burde jeg vite by now, men det har tydeligvis gått i glemmeboken. Dersom du har en int-variabel ved navn num1, som ber om en verdi gjennom f.eks JOptionPane.showInputDialog, hvordan koder du det slik at den ikke vil godta en ikke-eksisterende verdi (dvs. at den skal be om verdien om igjen dersom bruker kun trykker på enter uten å angi verdi først)? Irriterende når programmet avslutter med error når den ikke får angitt verdi. Endret 15. oktober 2007 av jemartinsen81
LostOblivion Skrevet 15. oktober 2007 Skrevet 15. oktober 2007 (endret) Bruk exceptions da vel. Endret 15. oktober 2007 av LostOblivion
pgdx Skrevet 15. oktober 2007 Skrevet 15. oktober 2007 boolean ok = false; int mittTall = 0; do { String input = JOptionPane.showInputDialog(); try { mittTall = Integer.parseInt(input); ok = true; } catch (NumberFormatException e) { JOptionPane.showMessageDialog(); } }while(!ok);
blackbrrd Skrevet 16. oktober 2007 Skrevet 16. oktober 2007 (endret) Det er ikke pen kode å gjøre seg avhengig av exceptions for å håndtere input/logikk i programmer... boolean ok = false; int mittTall = 0; do { String input = JOptionPane.showInputDialog(); try { if(input != null && input.matches("\\d")) { mittTall = Integer.parseInt(input); ok = true; } } catch (NumberFormatException e) { // ignore this... } }while(!ok); Endret 16. oktober 2007 av blackbrrd
pgdx Skrevet 16. oktober 2007 Skrevet 16. oktober 2007 Så man catcher en exception, men vil heller ignorere den fremfor å gi brukeren en vetug feilmelding ... ? Høyst interessant.
mar Skrevet 20. oktober 2007 Skrevet 20. oktober 2007 Det er ikke pen kode å gjøre seg avhengig av exceptions for å håndtere input/logikk i programmer... boolean ok = false; int mittTall = 0; do { String input = JOptionPane.showInputDialog(); try { if(input != null && input.matches("\\d")) { mittTall = Integer.parseInt(input); ok = true; } } catch (NumberFormatException e) { // ignore this... } }while(!ok); Selv om regexp'en egentlig sørger for at det unntaket aldri skal dukke opp så er tomme catch-blokke langt fra det som kan kalles pen kode, for å si det mildt. Da er det vel mye bedre å bruke NumberFormatException til å oppdage at det var noe galt med verdien? Checked exceptions er jo tiltenkt å håndtere ikke fatale feil (feks ugyldig input fra bruker).
blackbrrd Skrevet 21. oktober 2007 Skrevet 21. oktober 2007 (endret) Helt enig med LostOblivion og mar, men poenget er at det er bedre å bruke en reg-exp først for så å bruke exceptions til å håndtere unntakene? :o) Mao tenkte jeg meg ikke helt om når jeg skrev koden Bruker sjelden InputDialog til å hente data fra brukeren, det er vanligvis svært dårlig design.. Endret 21. oktober 2007 av blackbrrd
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å