how convert java string int tutorial with examples
Tento kurz vysvětluje způsoby převodu řetězce Java String na celé číslo pomocí metod Integer.parseInt a Integer.ValueOf s příklady kódu:
Pokryjeme následující dvě statické metody třídy Integer, které se používají k převodu řetězce Java String na hodnotu int:
- Integer.parseInt ()
- Integer.valueOf ()
=> Zkontrolujte VŠECHNY výukové programy Java zde
Co se naučíte:
- Převod řetězce Java na Int
- Závěr
Převod řetězce Java na Int
Uvažujme o scénáři, kde musíme s číslem provést nějakou aritmetickou operaci, ale tato číselná hodnota je k dispozici ve formě řetězce. Řekněme, že číslo se načítá jako text pocházející z textového pole webové stránky nebo textové oblasti webové stránky.
V takovém scénáři musíme nejprve převést tento řetězec na načtení čísel v celočíselném formátu.
Například, uvažujme scénář, kdy chceme přidat 2 čísla. Tyto hodnoty jsou z vaší webové stránky načteny jako „300“ a „200“ a my s těmito čísly chceme provést aritmetickou operaci.
Rozumíme tomu pomocí ukázkového kódu. Zde se snažíme přidat 2 čísla „300“ a „200“ a přiřadit je k proměnné „c“. Když tiskneme „c“, očekáváme výstup na konzoli jako „500“.
package com.softwaretestinghelp; public class StringIntDemo{ public static void main(String() args) { //Assign text '300' to String variable String a='300'; //Assign text '200' to String variable String b='200'; //Add variable value a and b and assign to c String c=a+b; //print variable c System.out.println('Variable c Value --->'+c);//Expected output as 500 } } Here is the program Output : Variable c Value --->300200
Ve výše uvedeném programu je ale skutečný výstup vytištěný na konzole
„Hodnota proměnné c -> 300200“ .
vkládání a mazání binárních stromů v Javě
Jaký může být důvod pro tisk tohoto výstupu?
Odpověď na tuto otázku je, že když jsme udělali a + b, používá jako zřetězení operátor „+“. Takže dovnitř c = a + b; Java zřetězuje řetězce aab, tj. Zřetězuje dva řetězce „300“ a „200“ a tisk „300200“.
K tomu dochází, když se pokusíme přidat dva řetězce:
Co by se tedy mělo udělat, pokud chceme přidat tato dvě čísla?
Za tímto účelem musíme nejprve převést tyto řetězce na čísla a poté provést aritmetickou operaci na těchto číslech. Abychom mohli převést Java String na int, můžeme použít následující metody poskytované třídou Java Integer.
- Integer.parseInt ()
- Integer.valueOf ()
Podívejme se podrobně na tyto metody.
# 1) Použití metody Java Integer.parseInt ()
Metodu parseInt () poskytuje třída Integer class. Třída Integer se nazývá třída Wrapper, protože zabalí hodnotu primitivního typu int do objektu.
Podívejme se na podpis metody níže:
public static int parseInt (String str) vyvolá NumberFormatException
public static Integer valueOf (String str) hodí NumberFormatException
Toto je statická metoda poskytovaná třídou Integer, která vrací objekt třídy Integer s hodnotou, která je určena String objektem, který jí byl předán. Zde se interpretace předaného argumentu provádí jako celé číslo se znaménkem.
Toto je stejné jako argument předaný metodě parseInt (java.lang.String). Výsledkem vrácení je objekt třídy Integer, který představuje celočíselnou hodnotu určenou Stringem. Jednoduše řečeno, metoda valueOf () vrací objekt Integer rovný hodnotě
nové celé číslo (Integer.parseInt (str))
Zde je parametrem „str“ řetězec obsahující celočíselnou reprezentaci a metoda vrací objekt Integer obsahující hodnotu představovanou „str“ v metodě.
Tato metoda vyvolá výjimku NumberFormatException když řetězec neobsahuje analyzovatelné celé číslo.
Integer.parseInt () Metoda pro řetězec bez znaků
Zkusme pochopit, jak použít tuto metodu Integer.parseInt () ve stejném programu Java, který jsme viděli v našem dřívějším ukázce.
package com.softwaretestinghelp; /** * This class demonstrates sample code to convert String to int Java program * using Integer.parseInt() method using String having decimal digits without * ASCII sign i.e. plus + or minus - * */ public class StringIntDemo { public static void main(String() args) { //Assign text '300' to String variable a String a='300'; //Pass a i.e.String “300” as a parameter to parseInt() //to convert String 'a' value to integer //and assign it to int variable x int x=Integer.parseInt(a); System.out.println('Variable x value --->'+x); //Assign text '200' to String variable b String b='200'; //Pass b i.e.String “200” as a parameter to parseInt() //to convert String 'b' value to integer //and assign it to int variable y int y=Integer.parseInt(b); System.out.println('Variable y value --->'+y); //Add integer values x and y i.e.z = 300+200 int z=x + y; //convert z to String just by using '+' operator and appending '' String c=z + ''; //Print String value of c System.out.println('Variable c value --->'+c); } }
Zde je program Výstup:
Hodnota proměnné x -> 300
Proměnná a hodnota -> 200
Hodnota proměnné c -> 500
Takže nyní jsme schopni získat požadovaný výstup, tj. Součet dvou čísel, která jsou reprezentována jako text, převedením na hodnotu int a následným provedením další operace s těmito čísly.
Integer.parseInt () Metoda pro řetězec se znaménky
Jak je vidět v popisu výše uvedené metody Integer.parseInt (), může být prvním znakem znak mínus ASCII „-“ pro indikaci záporné hodnoty nebo znak ASCII plus „+“ pro indikaci kladné hodnoty hodnota. Zkusme stejný program se zápornou hodnotou.
Podívejme se na ukázkový program s hodnotami a znaménky jako „+“ a „-“.
Použijeme podepsané String hodnoty jako „+75“ a „-75000“ a analyzujeme je na celé číslo a poté porovnáme, abychom našli větší číslo mezi těmito 2 čísly:
package com.softwaretestinghelp; /** * This class demonstrates sample code to convert string to int Java * program using Integer.parseInt() method * on string having decimal digits with ASCII signs i.e. plus + or minus - * @author * */ public class StringIntDemo1 { public static void main(String() args) { //Assign text '75' i.e.value with ‘+’ sign to string variable a String a='+75'; //Pass a i.e.String “+75” as a parameter to parseInt() //to convert string 'a' value to integer //and assign it to int variable x int x =Integer.parseInt(a); System.out.println('Variable x value --->'+x); //Assign text '-75000' i.e.value with ‘-’ sign to string variable b String b='-75000'; //Pass b i.e.String “-75000” as a parameter to parseInt() //to convert string 'b' value to integer //and assign it to int variable y int y = Integer.parseInt(b); System.out.println('Variable y value --->'+y); //Get higher value between int x and y using Math class method max() int maxValue = Math.max(x,y); //convert maxValue to string just by using '+' operator and appending '' String c = maxValue + ''; //Print string value of c System.out.println('Larger number is --->'+c); }
Zde je program Výstup:
Hodnota proměnné x -> 75
Proměnná a hodnota -> - 75 000
Větší číslo je -> 75
Integer.parseInt () Metoda pro řetězec s úvodními nulami
V některých případech musíme mít také aritmetické operace s čísly s úvodními nulami. Podívejme se, jak pomocí metody Integer.parseInt () převést řetězec s číslem s úvodními nulami na hodnotu int.
Například, v některých softwarových systémech finanční domény je standardní formát mít číslo účtu nebo částku s úvodními nulami. Stejně jako v následujícím ukázkovém programu vypočítáváme výši splatnosti pevné částky vkladu pomocí úrokové sazby a částky pevné zálohy.
Zde je částka zadána pomocí úvodních nul. Tyto řetězcové hodnoty s úvodními nulami jsou analyzovány na celočíselné hodnoty pomocí Integer.
metoda parseInt (), jak je vidět v níže uvedeném programu:
package com.softwaretestinghelp; /** * This class demonstrates sample program to convert string with leading zeros to int java * using Integer.parseInt() method * * @author * */ public class StringIntDemo2{ public static void main(String() args) { //Assign text '00010000' i.e.value with leading zeros to string variable savingsAmount String fixedDepositAmount='00010000'; //Pass 0010000 i.e.String “0010000” as a parameter to parseInt() //to convert string '0010000' value to integer //and assign it to int variable x int fixedDepositAmountValue = Integer.parseInt(fixedDepositAmount); System.out.println('You have Fixed Deposit amount --->'+ fixedDepositAmountValue+' INR'); //Assign text '6' to string variable interestRate String interestRate = '6'; //Pass interestRate i.e.String “6” as a parameter to parseInt() //to convert string 'interestRate' value to integer //and assign it to int variable interestRateVaue int interestRateValue = Integer.parseInt(interestRate); System.out.println('You have Fixed Deposit Interst Rate --->' + interestRateValue+'% INR'); //Calculate Interest Earned in 1 year tenure int interestEarned = fixedDepositAmountValue*interestRateValue*1)/100; //Calcualte Maturity Amount of Fixed Deposit after 1 year int maturityAmountValue = fixedDepositAmountValue + interestEarned; //convert maturityAmount to string using format()method. //Use %08 format specifier to have 8 digits in the number to ensure the leading zeroes String maturityAmount = String.format('%08d', maturityAmountValue); //Print string value of maturityAmount System.out.println('Your Fixed Deposit Amount on maturity is --->'+ maturityAmount+ ' INR'); } }
Zde je program Výstup:
Máte pevnou částku vkladu -> 10 000 INR
Máte fixní úrokovou sazbu vkladu -> 6% INR
Vaše částka fixního vkladu při splatnosti je -> 00010600 INR
Ve výše uvedeném ukázkovém programu tedy předáváme metodu „00010000“ metodě parseInt () a tiskneme hodnotu.
String fixedDepositAmount='00010000'; int fixedDepositAmountValue = Integer. parseInt (fixedDepositAmount); System. out .println('You have Fixed Deposit amount --->'+ fixedDepositAmountValue+' INR');
Hodnotu zobrazenou na konzole uvidíme, protože máte částku fixního vkladu -> 10 000 INR
Zde se při převodu na celočíselnou hodnotu odstraní úvodní nuly.
Poté jsme vypočítali částku splatnosti fixního vkladu jako celočíselnou hodnotu „10600“ a výslednou hodnotu zformátovali pomocí specifikátoru formátu% 08 k načtení úvodních nul.
String maturityAmount = String. format ('%08d', maturityAmountValue);
Když vytiskneme hodnotu formátovaného řetězce,
System. out .println('Your Fixed Deposit Amount on maturity is --->'+ maturityAmount+ ' INR');
Vidíme výstup vytištěný na konzole jako Vaše částka fixního vkladu při splatnosti je -> 00010600 INR
NumberFormatException
V popisu Integer.parseInt () metoda, také jsme viděli výjimku vyvolanou metodou parseInt (), tj. NumberFormatException.
Tato metoda vyvolá výjimku, tj. NumberFormatException když řetězec neobsahuje analyzovatelné celé číslo.
Podívejme se tedy na scénář, ve kterém je vyvolána tato výjimka.
Podívejme se na následující ukázkový program, abychom porozuměli tomuto scénáři. Tento program vyzve uživatele k zadání procentního skóre a vrátí přijatou známku. Za tímto účelem analyzuje hodnotu řetězce zadanou uživatelem na celočíselnou hodnotu.
Package com.softwaretestinghelp; import java.util.Scanner; /** * This class demonstrates sample code to convert string to int Java * program using Integer.parseInt() method having string with non decimal digit and method throwing NumberFormatException * @author * */ public class StringIntDemo3{ private static Scanner scanner; public static void main(String() args){ //Prompt user to enter input using Scanner and here System.in is a standard input stream scanner = new Scanner(System.in); System.out.print('Please Enter the percentage you have scored:'); //Scan the next token of the user input as an int and assign it to variable precentage String percentage = scanner.next(); //Pass percentage String as a parameter to parseInt() //to convert string 'percentage' value to integer //and assign it to int variable precentageValue int percentageValue = Integer.parseInt(percentage); System.out.println('Percentage Value is --->' + percentageValue); //if-else loop to print the grade if (percentageValue>=75) { System.out.println('You have Passed with Distinction'); }else if(percentageValue>60) { System.out.println('You have Passed with Grade A'); }else if(percentageValue>50) { System.out.println('You have Passed with Grade B'); }else if(percentageValue>35) { System.out.println('You have Passed '); }else { System.out.println('Please try again '); } } }
Zde je program Výstup:
Zkusme to se 2 různými vstupními hodnotami zadanými uživatelem.
1. S platnou celočíselnou hodnotou
Zadejte procento, které jste zaznamenali: 82
Procentní hodnota je -> 82
Prošli jste vyznamenáním
2. S celočíselnou hodnotou InValid
Zadejte prosím procento, které jste zaznamenali: 85a
Výjimka ve vlákně „main“ java.lang.NumberFormatException: Pro vstupní řetězec: „85a“
na java.lang.NumberFormatException.forInputString (neznámý zdroj)
na java.lang.Integer.parseInt (neznámý zdroj)
na java.lang.Integer.parseInt (neznámý zdroj)
na com.softwaretestinghelp.StringIntDemo3.main (StringIntDemo3.java:26)
Jak je vidět na výstupu programu,
# 1) Když uživatel zadá platnou hodnotu, tj. 82 jako vstup, výstup zobrazený na konzole je následující:
Procentní hodnota je -> 82
Prošli jste vyznamenáním
# 2) Když uživatel zadá neplatnou hodnotu, tj. 85a jako vstup, výstup zobrazený na konzole je následující:
Zadejte prosím procento, které jste zaznamenali: 85a
Výjimka ve vlákně „main“ java.lang.NumberFormatException: Pro vstupní řetězec: „85a“
na java.lang.NumberFormatException.forInputString (neznámý zdroj)
na java.lang.Integer.parseInt (neznámý zdroj)
na java.lang.Integer.parseInt (neznámý zdroj)
na com.softwaretestinghelp.StringIntDemo3.main (StringIntDemo3.java:26)
při analýze 85a v metodě Integer.parseInt () je vyvolána výjimka java.lang.NumberFormatException, protože '85a' má znak 'a', který není desetinnou číslicí, ani znak ASCII '+' nebo '-' tj. '85a' není parsable integer pro metodu Integer.parseInt ().
Jednalo se tedy o jeden ze způsobů převodu Java String na int. Podívejme se na další způsob, jakým Java převádí String na int, tj. Pomocí metody Integer.valueOf ().
# 2) Použití Integer. valueOf () metoda
valueOf () metoda je také statická metoda třídy Integer.
Podívejme se na podpis metody níže:
public static int parseInt (String str) vyvolá NumberFormatException
Toto je statická metoda poskytovaná třídou Integer, která vrací objekt třídyInteger, který má hodnotu, která je určena String objektem, který mu byl předán. Zde se interpretace předaného argumentu provádí jako celé číslo se znaménkem.
Toto je stejné jako argument předaný metodě parseInt (java.lang.String). Výsledkem vrácení je objekt třídy Integer, který představuje celočíselnou hodnotu určenou Stringem. Jednoduše řečeno, metoda valueOf () vrací objekt Integer rovný hodnotě Nový Celé číslo (Integer.parseInt (str))
Zde je parametrem „str“ řetězec obsahující celočíselnou reprezentaci a metoda vrací objekt Integer obsahující hodnotu představovanou „str“ v metodě. Tato metoda vyvolá výjimku NumberFormatException když řetězec neobsahuje analyzovatelné celé číslo.
Pojďme pochopit, jak používat tuto metodu Integer.valueOf ().
Níže je uveden ukázkový program. Tento ukázkový kód počítá průměrnou teplotu 3 dny v týdnu. Zde jsou pro převod teploty hodnoty přiřazeny jako hodnota String na celočíselnou hodnotu. U tohoto převodu řetězce na celé číslo zkusme použít metodu Integer.valueOf ().
Package com.softwaretestinghelp; /** * This class demonstrates a sample program to convert string to integer in Java * using Integer.valueOf() method * on string having decimal digits with ASCII signs i.e.plus + or minus - * @author * */ public class StringIntDemo4 { public static void main(String() args) { //Assign text '-2' i.e.value with ‘-’ sign to string variable sundayTemperature String sundayTemperature= '-2'; //Pass sundayTemperature i.e.String “-2” as a parameter to valueOf() //to convert string 'sundayTemperature' value to integer //and assign it to Integer variable sundayTemperatureValue Integer sundayTemperatureValue = Integer.valueOf(sundayTemperature); System.out.println('Sunday Temperature value --->'+ sundayTemperatureValue); //Assign text '4' to string variable mondayTemperature String mondayTemperature = '4'; //Pass mondayTemperature i.e.String “4” as a parameter to valueOf() //to convert string 'mondayTemperature ' value to integer //and assign it to Integer variable mondayTemperature Integer mondayTemperatureValue = Integer.valueOf(mondayTemperature); System.out.println('Monday Temperature value --->'+ mondayTemperatureValue); //Assign text '+6' i.e.value with ‘+’ sign to string variable //tuesdayTemperature String tuesdayTemperature = '+6'; //Pass tuesdayTemperature i.e.String “+6” as a parameter to valueOf() //to convert string 'tuesdayTemperature' value to integer //and assign it to Integer variable tuesdayTemperature Integer tuesdayTemperatureValue = Integer.valueOf(tuesdayTemperature); System.out.println('Tuesday Temperature value --->'+ tuesdayTemperatureValue); //Calculate Average value of 3 days temperature //avgTEmp = (-2+4+(+6))/3 = 8/3 = 2 Integer averageTemperatureValue = (sundayTemperatureValue+mondayTemperatureValue +tuesdayTemperatureValue)/3; //convert z to string just by using '+' operator and appending '' String averageTemperature = averageTemperatureValue+''; //Print string value of x System.out.println('Average Temperature over 3 days --->'+averageTemperature); } }
Zde je program Výstup:
Nedělní hodnota teploty -> - 2
Hodnota teploty v pondělí -> 4
Úterý Hodnota teploty -> 6
Průměrná teplota za 3 dny -> 2
Cvičení: Pokud můžeme převést hodnoty řetězce, jak je vidět výše, můžeme zkusit řetězce, které mají desetinnou čárku
Například, místo „-2“ můžeme zkusit „-2,5“?
Vyzkoušejte výše uvedený ukázkový kód s metodou parseInt () nebo valueOf (), která přiřadí String sundayTemperature = “-2,5”;
Náznak: Přečtěte si znovu podpis metody o analyzovatelných hodnotách.
Odpovědět: Pokud vyzkoušíte výše uvedený ukázkový program s řetězcem neděle Teplota = „-2,5, vyvolá NumberFormatException, protože hodnoty argumentu String pro parseInt () a valueOf () jsou ASCII plus znaménko„ + “nebo minus„ - “a desetinné číslice.
Je tedy zřejmé, že „.“ Je neplatné. Protože tyto dvě metody poskytuje třída Integer, hodnoty s plovoucí desetinnou čárkou jako „2.5“ by byly pro tyto metody neparsovatelné.
Proto jsme diskutovali o obou metodách třídy Integer pro převod String na int v Javě.
Časté dotazy týkající se převodu řetězce na Int v Javě
Otázka č. 1) Jak mohu převést String na int v Javě?
Odpovědět: V Java String to int převodu lze provést dvěma způsoby, tj. Pomocí následujících metod metod třídy Integer:
- Integer.parseInt ()
- Integer.valueOf ()
Otázka č. 2) Jak analyzujete celé číslo?
Odpovědět: Třída Integer poskytuje statické metody, které se používají k analýze celočíselné hodnoty k převodu String na hodnotu int, tj. ParseInt () a valueOf ().
Otázka č. 3) Co je parseInt ()?
Odpovědět: parseInt () je statická metoda poskytovaná třídou Integer, která se používá k převodu Java String na hodnotu int, kde je hodnota String předána jako argument a metoda vrátí celočíselnou hodnotu.
Například, int x = Integer.parseInt (“100”) vrátí hodnotu int 100
Otázka č. 4) Co je analýza v Javě?
Odpovědět: Analýza v Javě je v zásadě převod hodnoty objektu jednoho datového typu na jiný datový typ. Například, Integer.valueOf (str) převede „str“, což je objekt datového typu String, na objekt datového typu Integer.
Závěr
V tomto kurzu jsme prozkoumali, jak převést String na int v Javě pomocí následující třídy obálky Integer statické metody:
- Integer.parseInt ()
- Integer.valueOf ()
Pokryli jsme také případ, kdy je NumberFormatException vyvolána pro neplatné číslo String.
Další čtení = >> 8 Metod pro převod Integer na Sting v Javě
=> Prozkoumejte jednoduchou sérii školení Java zde
Doporučené čtení
- Výukový program Java String s funkcí String Buffer a String Builder
- Výukový program Java String | Metody řetězců Java s příklady
- Reverzní řetězec Java: Výukový program s příklady programování
- Java String obsahuje () Výukový program metod s příklady
- Metoda délky Java String () S příklady
- Výukový program JAVA pro začátečníky: 100+ praktických výukových programů Java Video
- Celé číslo Java a třída Java BigInteger s příklady
- Metoda Java substring () - výuka s příklady