Gå til innhold

Ikke godta ikke-eksisterende verdi i variabel


Anbefalte innlegg

Skrevet (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 av jemartinsen81
Videoannonse
Annonse
Skrevet
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);

Skrevet (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 av blackbrrd
Skrevet
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).

Skrevet (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 av blackbrrd

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...