Det enklaste är att helt enkelt skicka strängen som argument till Integers konstruktor och sedan fånga ett eventuellt NumberFormatException. Kastas detta undantag så är det en ej godkänd sträng, annars är allt frid och fröjd:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">String myString = "1322";
Integer i;
try {
i = new Integer(myString);
} catch (NumberFormatException e) {
System.out.println(myString+ "är inte ett godkänt heltal");
}
------------------
det finns ingen.info tillgänglig.
"inside every human being there's an american trying to get out".
I det här fallet skulle det dock vara intressant att få höra på vilket sätt isDigit() är bättre lämpat, skall man ovandla en textsträng till en Integer så är det ju väldigt simpelt att just göra det och sedan fånga eventuella undantag istället för att hålla på och spendera klockcykler åt att kolla varenda tecken i strängen och se om det är en siffra eller inte.
------------------
det finns ingen.info tillgänglig.
"inside every human being there's an american trying to get out".
Faktum är att det tar mindre tid att bara kolla om det är en siffra i en sträng än att omvandla den.
Konstruktorn Integer(String) anropar Integer.parseInt(String) som kollar efter minustecken först och sedan går till sista tecknet i strängen och kollar om det är en digit . Om det är det så adderar den digit (genom bitoperatorer) till det resultat som redan finns.
Om man bara är intresserad av att veta om det är en till integer konverterbar sträng så tar det mindre klockcykler att bara kolla att alla ingående tecken är en siffra än att även göra matematiken.
Nu har jag svårt att se varför man INTE skulle vilja ha själva värdet på integern om man nu gör sig besväret att kolla om det är en integer...
Var tvungen att kolla asemblerkoden på denna operation och på en Solaris-maskin så skiljer det 3 instruktioner per siffra mellan att bara kolla om det är en siffra och att kolla och addera... och det är försummbart.
/Lime
------------------
Praeterea conseo microsoftenem esse delendam.
- modernt latinskt ordspråk
Faktum är att det tar mindre tid att bara kolla om det är en siffra i en sträng än att omvandla den.
Ehh, men när du väl kollat och godkänt strängen så kommer den att kontrolleras igen vid instansieringen av Integerobjektet.
Men visst, alla gör vi väl olika. Jag föredrar dock att helt enkelt fånga undantag men visst kan man sitta och knåpa ihop specialfunktioner om det roar en..
------------------
det finns ingen.info tillgänglig.
"inside every human being there's an american trying to get out".
Helt korrekt sgtP. Men nu var diskussionen om kollen tog längre tid än konverteringen.
För övrigt är det resursslöseri att skapa ett nytt Integerobjekt när man förmodligen kommer att använda det atomära int för det mesta... Integer.parseInt(String) är nog bättre då...
Håller fullständigt med om, och det tror jag att jag redan har sagt, att om man skall använda sträng/integern.
Det är aldrig fel att kika på källkoden till Javas core-klasser... Dom gör mycket roligt och snyggt där.
/Lime
------------------
Praeterea conseo microsoftenem esse delendam.
- modernt latinskt ordspråk
271 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25