Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse
Javel, koden er korrekt og gjør hva du har spesifisert. Du trenger bare litt innpakning rundt.

Mulig du finner en penere måte å pakke dette inn på, men denne vil essensielt gjøre akkurat dette.

 

-- pragmatisk c++ utvikler

 

Et medlemsnummer, f.eks, er det igrunn korrekt å klassifiere som en String, ettersom man ikke skal drive utregning med det... og med String variabler kan man ikke bruke metoden du foreslår. Trenger derfor den mer korrekte metoden for dette og. :-/

Endret av jemartinsen81
Lenke til kommentar
Et medlemsnummer, f.eks, er det igrunn korrekt å klassifiere som en String, ettersom man ikke skal drive utregning med det... og med String variabler kan man ikke bruke metoden du foreslår. Trenger derfor den mer korrekte metoden for dette og. :-/

 

Dette er jeg prinsippielt uenig med deg i.

Dersom medlemsnummeret er en string har du nye problemstillinger du må ta hensyn til.

I tillegg til at du må sjekke lengden på strengen er lik 5, så må du validere at strengen kun inneholder

gyldige tegn, dvs tall, og at det første sifferet ikke kan være 0.

 

Et annet moment, som stadig har blitt mindre relevant med årene, er at stringrepresentasjonen bruker mer minne enn tallrepresentasjonen.

 

Dette er og forblir et tall, strengen er en representasjon av tallet.

 

Løsningsforslagene oppsummert:

 

Løsning #1: Gjøre om strengen til et tall for å sjekke om nummeret er gyldig

boolean gyldig(String medlemsnr)
{
 try {
int nr = Integer.parseInt(medlemsnr);
return nr >= 10000 && nr < 100000;
 } catch (NumberFormatException nfe) {
return false;
 }
}

 

Løsning #2: Sjekke strengen (en kan bruke regex også)

boolean gyldig(String medlemsnr)
{
 if (medlemsnr.length() != 5) return false;
 return medlemsnr.charAt(0) >  '0'  medlemsnr.charAt(0) <= '9' &&
	 medlemsnr.charAt(1) >= '0'  medlemsnr.charAt(1) <= '9' &&
	 medlemsnr.charAt(2) >= '0'  medlemsnr.charAt(2) <= '9' &&
	 medlemsnr.charAt(3) >= '0'  medlemsnr.charAt(3) <= '9' &&
	 medlemsnr.charAt(4) >= '0'  medlemsnr.charAt(4) <= '9';
}

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