String -> null, Int -> ??
11 svar · 728 visningar · startad av Broms
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.)
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?
kom dock på att isDigit körs på Strings.. men !isDigit(toString(minInt)) funkade inte heller :\
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?
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..
Ok, jag skulle vilja se tilldelningsraden, typ int talet = ...;
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 -?
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!
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?
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.
danke!