Syntaxe Java: Převod řetězců na čísla

Typicky v a grafické uživatelské prostředí, budou existovat textová pole, která očekávají, že uživatel zadá číselnou hodnotu. Tato hodnota čísla skončí v a Tětiva objekt, který opravdu nepomůže vašemu programu, pokud chcete udělat aritmetiku. Naštěstí existují třídy wrapperů, které poskytují metody pro převod těchto hodnot String na čísla a třída String má metodu, jak je znovu převést.

Třídy obalů

primitivní datové typy které se zabývají čísly (tj. byte, int, double, float, long a short), všechny mají ekvivalenty třídy. Tyto třídy se nazývají třídy wrapperů, protože berou primitivní datový typ a obklopují jej funkcemi třídy. Třída Double bude mít například jako data dvojnásobnou hodnotu a bude poskytovat metody pro manipulaci s touto hodnotou.

Všechny tyto třídy obálky mají metodu nazvanou valueOf. Tato metoda bere String jako argument a vrací instanci třídy wrapper. Řekněme například, že máme řetězec s hodnotou deset:

Číslo řetězce = "10";

Mít toto číslo jako řetězec není pro nás k ničemu, takže pomocí třídy Integer je převedeme na objekt Integer:

instagram viewer
Celé číslo převedenoNumber = Integer.valueOf (číslo);

Nyní lze číslo použít jako číslo, nikoli jako řetězec:

převedeno číslo = převedeno číslo + 20;

Také můžete převést přímo na primitivní datový typ:

int convertNumber = Integer.valueOf (number) .intValue ();

U ostatních primitivních datových typů stačí slot ve správné třídě wrapperů - Byte, Integer, Double, Float, Long Short.

Poznámka: Musíte se ujistit, že řetězec může být analyzován na příslušný datový typ. Pokud se vám to nepodaří, skončí s chybou runtime. Například, pokusit se zakrýt “deset” do celého čísla:

String number = "ten";
int convertNumber = Integer.valueOf (number) .intValue ();

bude produkovat NumberFormatException, protože kompilátor netuší, že „deset“ má být 10.

Podrobněji stejná chyba nastane, pokud zapomenete, že 'int' může pojmout pouze celá čísla:

Číslo řetězce = "10,5";
int convertNumber = Integer.valueOf (number) .intValue ();

Kompilátor nezkrátí číslo, jen si bude myslet, že se nevejde do 'int' a že je čas hodit NumberFormatException.

Převod čísel na řetězce

Chcete-li vytvořit číslo do řetězce, následuje stejný druh vzoru jako třída String má metodu valueOf. Jako argument může brát kterékoli z primitivních čísel datového typu a vytvořit řetězec:

int numberTwenty = 20;

Převeden řetězec = String.valueOf (numberTwenty);

což dává hodnotu „20“ jako hodnotu String co nverted.

nebo můžete použít metodu toString u kterékoli třídy tříd:

Převeden řetězec = Integer.toString (numberTwenty);

Metoda toString je společná pro všechny typy objektů - většinou jde pouze o popis objektu. U tříd obálky je tento popis skutečnou hodnotou, kterou obsahují. V tomto směru je konverze o něco robustnější. Pokud měla být použita třída Double místo Integer:

Převeden řetězec = Double.toString (numberTwenty);

výsledek by nezpůsobil a chyba runtime. Převedená proměnná by obsahovala řetězec „20.0“.

Existuje také jemnější způsob, jak převádět čísla, když jste zřetězené řetězce. Pokud měl být řetězec postaven jako:

String aboutDog = "Můj pes je" + numberTwenty + "years old.";

převod int numberTwenty se provede automaticky.