Gå til innhold

Anbefalte innlegg

Skrevet

Hei hei,

 

Det er noe som er gått i glemmeboken for meg. Dersom jeg vil at en int-variabel kun skal godta femsiffrede verdier, som f.eks "12345", hvilken funksjon skal jeg bruke? Den skal altså kunne sette antall siffer i verdien bruker taster inn, inn i en egen variabel, som brukes for å foreta en sjekk.

 

Takk.

Videoannonse
Annonse
Skrevet

Jepp er klar over den metoden, men den virker mer som en slags snarvei som ikke er helt korrekt å bruke i skolesammenheng... dog jeg kan ta feil. Jeg mener det er en funksjon spesielt for å måle antall siffer.

Skrevet

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

Skrevet (endret)
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
Skrevet
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';
}

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