23. oktober 2002 - 13:20Der er
16 kommentarer og 1 løsning
Hvordan sikre man at brugeren ikke indtaster noget forkert?
Jeg er i gang med at lave et meget simpelt program hvor brugeren indtaster nogle tal i en DOS prompt
Problemet jeg er løbet ind i er at hvis brugeren istedet indtaste bogstaver, misforstår programmet indtastningen og sætter automatisk indtastningen til MIN_VALUE
Jeg har forsøgt med både en do-while løkke, en if-løkke, og en switch, men ingen af dem tager højde for bogstaverne.
Hey - er det muligt at se kildekoden... Bare for at se hvilke "tool's" du impotere i starten af programmet... Btw - hvad er det helt præcist programmet skal aflæse mht indtastning?! P-ilsner Benjams69
Og så kan du enten: * selv checke for at alle tegn er valide inden du konverterer til tal * bruge en konvertering til tal som thrower en exception ved invalide data og catche den
til arne v, du skal lige tage højde for at en streng ofte betegnes som metode og ikke kun en datatype... At skulle analysere den streng ville jeg mene var mere eller mindre umuligt, but hey - hvor der er vilje er der vej. Jeg ville i stedet for at bruge type streng, bruge char, da jeg mener at den er mere håndterbare.... P-ilsner Benjams69
Du kan måske ikke lide exceptions til dette brug, men det sikrer konistsens mellem Java parsning og custom parsning. F.eks. har alle eksempler her testet på positive heltal uden spaces. Hvis vi skal teste for minus som første tegn og leading & trailing spaces, så bliver der mere kode. Og hvis vi skifter fra hel tal til decimal tal, så brliver det først rigtigt kompliceret. Så det kan faktisk godt være meget kode-besparende at lukrere lidt på Java parsning.
Hvis man indtaster et bogstav hvor man burde indtaste et heltal, sætter Java automatisk den indvirkede variabel til MIN_VALUE (mere præcist ser fejlmeddelelsen således ud: "Error reading int data, MIN_VALUE value returned.") MIN_VALUE er som bekendt = -2147483648, og man kan dermed teste sin variable for bogstaver: if(data<0) System.out.println("Ulovlig værdi indtastet...");
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.