Java szintaxis: Karakterláncok konvertálása számokra

Általában a grafikus felhasználói felület, olyan szövegmezők lesznek, amelyek elvárják, hogy a felhasználó numerikus értéket írjon be. Ez a számérték a végén lesz Húr objektum, amely nem igazán segít a programnál, ha számtani műveletet akar végezni. Szerencsére vannak olyan burkolóosztályok, amelyek módszereket biztosítanak ezeknek a karakterláncoknak a számainak konvertálására, és a karakterlánc osztálynak van módszere ismételt konvertálásra.

Csomagoló osztályok

Az primitív adattípusok amelyek a számokkal foglalkoznak (azaz bájt, int, dupla, úszó, hosszú és rövid), mindegyiknek van osztály-egyenértéke. Ezeket az osztályokat wrapper osztályoknak nevezzük, mivel primitív adattípust vesznek fel, és körülveszik az osztály funkcionalitásával. Például a Dupla osztály adatai kettős értékkel rendelkeznek, és módszereket biztosítanak az érték manipulálására.

Ezeknek a burkolóosztályoknak mindegyike rendelkezik a valueOf nevű módszerrel. Ez a módszer egy String-et vesz argumentumként, és visszaadja a wrapper osztály példányát. Tegyük fel például, hogy van egy tízértékű karakterlánc:

instagram viewer
Karakterlánc száma = "10";

Ha ezt a számot karakterlánccal rendelkezzük, akkor nincs értelme számunkra, ezért az Egész osztályt arra használjuk, hogy egész szám objektummá alakítsuk:

Egész konvertált szám = Integer.valueOf (szám);

Most a szám használható számként, és nem karakterláncként:

convertedNumber = konvertált szám + 20;

Azt is megteheti, hogy a konverzió egyenesen primitív adattípusra menjen:

int konvertált szám = Integer.valueOf (szám) .intValue ();

Más primitív adattípusok esetén csak a megfelelő csomagoló osztályba illeszkedik - Byte, Integer, Double, Float, Long Short.

Jegyzet: Győződjön meg arról, hogy a karakterlánc elemezhető a megfelelő adattípusba. Ha nem tudja, akkor futásidejű hibát fog eredményezni. Például, ha megpróbáljuk "tíz" -et egész számba takarni:

Karakterlánc száma = "tíz";
int konvertált szám = Integer.valueOf (szám) .intValue ();

létrehoz egy NumberFormatException-et, mert a fordítónak fogalma sincs, hogy a "tíz" állítólag 10-es lesz.

Finomabb, hogy ugyanaz a hiba akkor fordul elő, ha elfelejti, hogy az 'int' csak egész számokat tartalmazhat:

Karakterlánc száma = "10,5";
int konvertált szám = Integer.valueOf (szám) .intValue ();

A fordító nem csonkolja le a számot, csak azt fogja gondolni, hogy nem fér bele az „int” -be, és itt az ideje, hogy dobja a NumberFormatException-t.

Számok konvertálása karakterláncokká

Ha számot karakterlánccá alakítunk, ugyanazt a mintázatot kövessük, mint a karakterlánc osztálynak egy valueOf módszere is. Bármely primitív adattípus számot felvehet argumentumként, és létrehozhat egy karakterláncot:

int számTwenty = 20;

Húros karakterlánc konvertálva = String.valueOf (számaTwenty);

amely a "20" -ot adja meg a co-érték megváltoztatásának String-értékeként.

vagy bármelyik csomagoló osztály toString módszerét használhatja:

Húros karakterlánc konvertálva = Integer.toString (számaTwenty);

A toString módszer minden objektumtípusra jellemző - legtöbbször csak az objektum leírása. A wrapper osztályok esetében ez a leírás az általuk jelentett tényleges érték. Ebben az irányban a konvertálás egy kicsit robusztusabb. Ha a kettős osztályt kellene használni az egész szám helyett:

Húros karakterlánc konvertálva = Double.toString (számaTwenty);

az eredmény nem okozna a Futtatási hiba. A konvertált változó a "20.0" karakterláncot tartalmazza.

Van még egy finomabb módszer a számok konvertálására, amikor Ön van összefűző húrok. Ha egy húrokat úgy kellene építeni, mint:

Karakterlánc aboutDog = "A kutyám" + huszonhárom éves ".";

az intwTwenty átalakítása automatikusan megtörténik.