webForumDet fria alternativet

String -> null, Int -> ??

11 svar · 728 visningar · startad av Broms

BromsMedlem sedan sep. 2002190 inlägg
#1

klicka!

Där har vi en fråga som även jag funderar över..

Kortfattat; jag skall kontrollera om en int icke är "null" eller vad nu ints motsvarighet till Stringens null är.. ska även köra en matcher på det som i länken ovan.. kan någon ändra på snutten däri och posta tack..

mvh

nitro2k01Medlem sedan aug. 20037 630 inlägg
#2

Alla objekt-variabler (Strängar inkluderade) i Java kan anta två sorters värden, antingen en referens till en instans av ett visst objekt, eller null. Något motsvarande null för nummer finns inte.
För att kunna svara på frågan måste jag veta varifrån värdet kommer. En kvalificerad gissning är dock att du ska kolla om numret == -1. Ett anant sätt kan vara att se upp för exceptions. Har du möjligtvis en try...catch-sats som inte hanterar felet? (Tom catch-sats med andra ord.)

BromsMedlem sedan sep. 2002190 inlägg
#3

Faktiskt så ligger den ej i en try-catch utan i konstruktorn. dessutom kör jag flera blabla == null med string/int efter varann.. hur gör jag för att testa intarna på samma sätt då? -1 går väl ej då de ej ska ha fått något värde från början?

!isDigit(talet) && talet>0 kanske skulle kunna funka? men funkar det även för double?

Nästa grej..

Pattern p = Pattern.compile("^[A-ZÅÄÖa-zåäö0-9 ]*$");

är min pattern, men kom på att den även skall kunna innehålla - och . för telnummer och priser med decimal.. hur lägger jag till dessa i pattern.. måste det till någon slash för att säkra tecknen?

BromsMedlem sedan sep. 2002190 inlägg
#4

kom dock på att isDigit körs på Strings.. men !isDigit(toString(minInt)) funkade inte heller :\

nitro2k01Medlem sedan aug. 20037 630 inlägg
#5

Men varifrån får du variabeln talet? Den kan ju inte bara uppstå från ingenstans. Kommer den från en databas, från en fil eller?

BromsMedlem sedan sep. 2002190 inlägg
#6

den kommer från ett webbformulär.. och jag vill inte bara ha javascript-kontrollen utan även en serverkontroll.. och konstruktorn anropas när ett enligt javascripkontrollen godkänt formulär skickats, och datan är på väg att skickas till databasen, då utförs denna kontroll..

nitro2k01Medlem sedan aug. 20037 630 inlägg
#7

Ok, jag skulle vilja se tilldelningsraden, typ int talet = ...;

BromsMedlem sedan sep. 2002190 inlägg
#8

i formuläret är ju numret en string då fältens datan hämtas genom getParameter(stringen); denna görs sedan om till en int via t.ex.

Integer.parseInt(request.getParameter("Antal")) och skickas därefter till konstruktorn.

ps. hur fixade man till pattern till det att ha med . och -?

nitro2k01Medlem sedan aug. 20037 630 inlägg
#9

Precis vad jag var ute efter.
Kolla request.getParameter("Antal") är null, innan du omvandlar till ett tal.

if (request.getParameter("Antal")!=null)
    talet=Integer.parseInt(request.getParameter("Antal"))
else
    // Fel!
BromsMedlem sedan sep. 2002190 inlägg
#10

det är en väg, som när jag ser den förstår kan funka :p

dock är det en projektuppgift, vilken innebär att man ska lägga så mkt kod som möjligt i klassfilerna och så lite som möjligt i jsp-filen..

men vad tror du om att skicka den som string till konstruktorn istället och sedan efter att ha kört den där kontrollen tal == null || blabla == null, göra om till intar?

nitro2k01Medlem sedan aug. 20037 630 inlägg
#11

Jomen, ok, skicka med en sträng innehållande talet till konstruktorn och gör kollen där.

String talet=request.getParameter("Antal");
new MinKlass(...,talet,...);
....
int talet_nummer=0;

if (... || talet==null || ...){
    // Fel
}else{
    talet_nummer=Integer.parseInt(talet)
}

Ang regexpen föreslår jag att du har ett varsitt Pattern för varje fält som ska kontrolleras. För att lägga till . som tecken måste du lägga till \. till ditt mönster. Men tecknet \ kan måste också escapas, pga Java's stränghantering. Så om du skriver \\. så motsvarar det \. som skickas vidare. Tecknet - skall inte escapas.

BromsMedlem sedan sep. 2002190 inlägg
#12

danke!

129 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
126 ms — hämta tråd, inlägg och bilagor (db)