how convert java string int tutorial with examples
Aquest tutorial explica les maneres de convertir Java String a Integer mitjançant mètodes Integer.parseInt i Integer.ValueOf amb exemples de codi:
Cobrirem els dos mètodes estàtics de la classe Enter que s’utilitzen per convertir Java String a valor int:
- Integer.parseInt ()
- Integer.valueOf ()
=> Consulteu TOTS els tutorials de Java aquí
Què aprendreu:
- Conversió de Java String To Int
- Conclusió
Conversió de Java String To Int
Considerem un escenari en què hem de realitzar algun tipus d’operació aritmètica amb un nombre, però aquest valor de número està disponible en forma de cadena. Suposem que el número s’obté com a text que prové del camp de text d’una pàgina web o d’una àrea de text d’una pàgina web.
En aquest cas, primer hem de convertir aquesta cadena per recuperar nombres en format enter.
Per exemple, considerem un escenari en què volem afegir 2 números. Aquests valors es recuperen com a text de la vostra pàgina web com a '300' i '200' i volem fer una operació aritmètica amb aquests números.
Anem a entendre-ho amb l'ajuda d'un codi de mostra. Aquí intentem afegir 2 números '300' i '200' i assignar-los a la variable 'c'. Quan imprimim 'c', esperem que la sortida en una consola sigui '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
Però, en el programa anterior, la sortida real impresa a la consola és
'Valor de la variable c -> 300200' .
quin és el vostre enfocament mentre proveu aplicacions mòbils
Quin podria ser el motiu per imprimir aquesta sortida?
La resposta a això és que, quan vam fer a + b, s’utilitza l’operador ‘+’ com a concatenació. Així, a c = a + b; Java està concatenant les cadenes ayb, és a dir, concatenant dues cadenes '300' i '200' i imprimint '300.200'.
Per tant, això passa quan intentem afegir dues cadenes:
Llavors, què s’ha de fer si volem afegir aquests dos números?
Per a això, primer hem de convertir aquestes cadenes en nombres i després realitzar una operació aritmètica en aquests nombres. Per convertir Java String a int, podem utilitzar els mètodes següents proporcionats per la classe Java Integer.
- Integer.parseInt ()
- Integer.valueOf ()
Vegem aquests mètodes un per un en detall.
# 1) Utilitzant el mètode Java Integer.parseInt ()
El mètode parseInt () és proporcionat per la classe Integer class. La classe Integer s’anomena classe Wrapper, ja que embolcalla un valor del tipus primitiu int en un objecte.
Vegem la signatura del mètode següent:
public static int parseInt (String str) llança NumberFormatException
public static Integer valueOf (String str) llança NumberFormatException
Es tracta d’un mètode estàtic proporcionat per la classe Integer que retorna un objecte d’una classe Integer que té un valor que s’especifica mitjançant l’objecte String que li passa. Aquí, la interpretació de l'argument aprovat es fa com un nombre decimal signat.
Això és el mateix que l'argument passat al mètode parseInt (java.lang.String). El resultat retornat és un objecte de classe enter que representa el valor enter especificat per la cadena. En paraules simples, el mètode valueOf () retorna un objecte enter igual al valor de
nou enter (Integer.parseInt (str))
Aquí, el paràmetre 'str' és una cadena que conté la representació sencera i el mètode retorna un objecte enter que conté el valor representat per 'str' al mètode.
Aquest mètode genera una excepció NumberFormatException quan la cadena no conté un nombre enter analitzable.
Mètode Integer.parseInt () per a una cadena sense signes
Intentem entendre com utilitzar aquest mètode Integer.parseInt () al mateix programa Java que hem vist en el nostre exemple anterior.
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); } }
Aquí teniu el programa de sortida:
Valor de la variable x -> 300
Variable i value -> 200
Valor de la variable c -> 500
Ara, doncs, podem obtenir la sortida desitjada, és a dir, la suma dels dos números que es representen com a text convertint-los en valor int i realitzant una operació addicional sobre aquests números.
Mètode Integer.parseInt () per a la cadena amb signes
Com es veu a la descripció del mètode Integer.parseInt () anterior, es permet que el primer caràcter sigui un signe menys ASCII '-' per a la indicació d'un valor negatiu o un signe ASCII més '+' per a la indicació d'un positiu valor. Provem el mateix programa amb un valor negatiu.
Vegem el programa de mostra amb valors i signes com '+' i '-'.
Utilitzarem els valors de cadena signats com “+75” i “-75000”, i analitzarem els nombres enters i després compararem per trobar un nombre més gran entre aquests 2 números:
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); }
Aquí teniu el programa de sortida:
Valor de la variable x -> 75
Variable i value -> - 75000
El nombre més gran és -> 75
Mètode Integer.parseInt () per a cadenes amb zeros principals
En alguns casos, també hem de tenir operacions aritmètiques sobre els números amb els zeros inicials. Vegem com convertir una cadena que té un número amb zeros inicials a valor int mitjançant el mètode Integer.parseInt ().
Per exemple, en alguns sistemes de programari de domini financer, és un format estàndard per tenir un número de compte o un import amb zeros inicials. Igual que, al següent programa de mostra, estem calculant l'import del venciment de l'import del dipòsit fix mitjançant el tipus d'interès i l'import del dipòsit fix.
Aquí, l’import s’especifica mitjançant zeros inicials. Aquests valors de cadena amb zeros inicials s’analitzen a valors sencers mitjançant Integer.
mètode parseInt () tal com es veu al programa següent:
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'); } }
Aquí teniu el programa de sortida:
Teniu un import fix del dipòsit -> 10000 INR
Teniu un tipus d'interès de dipòsit fix -> 6% INR
El seu import fix del dipòsit al venciment és -> 00010600 INR
Per tant, al programa de mostra anterior, passem ‘00010000’ al mètode parseInt () i imprimim el valor.
String fixedDepositAmount='00010000'; int fixedDepositAmountValue = Integer. parseInt (fixedDepositAmount); System. out .println('You have Fixed Deposit amount --->'+ fixedDepositAmountValue+' INR');
Veurem el valor que es mostra a la consola ja que teniu un import fix de dipòsit -> 10000 INR
Aquí, mentre es converteix en un valor enter, s’eliminen els zeros inicials.
A continuació, hem calculat l'import del venciment del dipòsit fixat com a valor enter '10600' i hem formatat el valor del resultat mitjançant l'especificador de format% 08 per recuperar zeros inicials.
String maturityAmount = String. format ('%08d', maturityAmountValue);
Quan imprimim el valor de la cadena formatada,
System. out .println('Your Fixed Deposit Amount on maturity is --->'+ maturityAmount+ ' INR');
Podem veure la sortida que s’imprimeix a la consola com El seu import fix del dipòsit al venciment és -> 00010600 INR
NumberFormatException
A la descripció de Integer.parseInt () mètode, també hem vist una excepció generada pel mètode parseInt () i.e. NumberFormatException.
Aquest mètode genera una excepció, és a dir, NumberFormatException quan la cadena no conté un nombre enter analitzable.
Per tant, vegem l’escenari en què es produeix aquesta excepció.
Vegem el programa de mostra següent per entendre aquest escenari. Aquest programa demana a l'usuari que introdueixi el percentatge puntuat i retorna la qualificació rebuda. Per a això, analitza el valor de cadena introduït per l'usuari a un valor enter.
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 '); } } }
Aquí teniu el programa de sortida:
Proveu-ho amb 2 valors d'entrada diferents introduïts per l'usuari.
1. Amb un valor enter vàlid
Introduïu el percentatge que heu puntuat: 82
El valor percentual és -> 82
Heu passat amb distinció
2. Amb un valor enter InValid
Introduïu el percentatge que heu puntuat: 85a
Excepció al fil 'principal' java.lang.NumberFormatException: per a la cadena d'entrada: '85a'
a java.lang.NumberFormatException.forInputString (font desconeguda)
a java.lang.Integer.parseInt (font desconeguda)
a java.lang.Integer.parseInt (font desconeguda)
a com.softwaretestinghelp.StringIntDemo3.main (StringIntDemo3.java:26)
Així, com es veu a la sortida del programa,
# 1) Quan l'usuari introdueix un valor vàlid, és a dir, 82 com a entrada, la sortida que es mostra a la consola és la següent:
El valor percentual és -> 82
Heu passat amb distinció
# 2) Quan l'usuari introdueix un valor no vàlid, és a dir, 85a com a entrada, la sortida que es mostra a la consola és la següent:
Introduïu el percentatge que heu puntuat: 85a
Excepció al fil 'principal' java.lang.NumberFormatException: per a la cadena d'entrada: '85a'
a java.lang.NumberFormatException.forInputString (font desconeguda)
a java.lang.Integer.parseInt (font desconeguda)
a java.lang.Integer.parseInt (font desconeguda)
a com.softwaretestinghelp.StringIntDemo3.main (StringIntDemo3.java:26)
java.lang.NumberFormatException s'obté mentre s'analitza 85a en el mètode Integer.parseInt () ja que '85a' té el caràcter 'a' que no és un dígit decimal ni el signe ASCII '+' o '-' és a dir, '85a' no és analitzable enter per al mètode Integer.parseInt ().
Per tant, es tractava d’una de les maneres de convertir Java String a int. Vegem l’altra manera en què Java converteix String en int, és a dir, fent servir el mètode Integer.valueOf ().
# 2) Utilitzar Integer. valueOf () Mètode
El mètode valueOf () també és un mètode estàtic de la classe Enter.
Vegem la signatura del mètode següent:
public static int parseInt (String str) llança NumberFormatException
Aquest és un mètode estàtic proporcionat per la classe Integer que retorna un objecte d'un classInteger que té un valor que s'especifica mitjançant l'objecte String que li passa. Aquí, la interpretació de l'argument aprovat es fa com un nombre decimal signat.
Això és el mateix que l'argument passat al mètode parseInt (java.lang.String). El resultat retornat és que un objecte de classe enter representa el valor enter especificat per la cadena. En paraules simples, el mètode valueOf () retorna un objecte enter igual al valor de nou Enter (Integer.parseInt (str))
Aquí, el paràmetre 'str' és una cadena que conté la representació sencera i el mètode retorna un objecte enter que conté el valor representat per 'str' al mètode. Aquest mètode genera l'excepció NumberFormatException quan la cadena no conté un nombre enter analitzable.
Comprenem com utilitzar aquest mètode Integer.valueOf ().
A continuació es mostra un programa de mostra. Aquest codi de mostra calcula la temperatura mitjana de 3 dies de la setmana. Aquí, per convertir la temperatura, els valors s’assignen com a valor de cadena a un valor enter. Per a aquesta conversió de cadena a enter, provem d’utilitzar el mètode 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); } }
Aquí teniu el programa de sortida:
Diumenge Valor de temperatura -> - 2
Dilluns Valor de la temperatura -> 4
Dimarts Valor de temperatura -> 6
Temperatura mitjana durant 3 dies -> 2
Exercici: Si podem convertir els valors de les cadenes com es va veure més amunt, podem provar les cadenes amb un punt decimal
Per exemple, en lloc de '-2', podem provar '-2,5'?
Proveu el codi de mostra anterior amb el mètode parseInt () o valueOf () assignant String sundayTemperature = '-2,5';
Pista: Torneu a llegir la signatura del mètode sobre els valors analitzables.
Resposta: Si proveu el programa de mostra anterior amb String diumengeTemperatura = '-2,5, llançarà NumberFormatException com a valors de l'argument String per a parseInt () i valueOf () són ASCII més '+' o menys '-' signe i dígits decimals.
Per tant, òbviament ‘.’ No és vàlid. A més, com que la classe Integer proporciona aquests dos mètodes, els valors de coma flotant com “2,5” serien valors no analitzables per a aquests mètodes.
Per tant, hem analitzat els dos mètodes de la classe Integer per convertir una cadena a int a Java.
Preguntes més freqüents sobre la conversió de cadenes a int a Java
P # 1) Com puc convertir la cadena a int a Java?
Resposta: A Java, la conversió de cadenes a int es pot fer de dues maneres, és a dir, utilitzant els mètodes següents de mètodes de classe completa:
- Integer.parseInt ()
- Integer.valueOf ()
Q # 2) Com s'analitza un enter?
Resposta: La classe Integer proporciona mètodes estàtics que s’utilitzen per analitzar el valor enter per convertir la cadena en valor int, és a dir, parseInt () i valueOf ().
P # 3) Què és parseInt ()?
Resposta: parseInt () és un mètode estàtic proporcionat per la classe Integer que s'utilitza per convertir Java String a valor int on es passa el valor de la cadena com a argument i el valor enter es torna mitjançant el mètode.
Per exemple, int x = Integer.parseInt ('100') retorna el valor int 100
Q # 4) Què és analitzar a Java?
Resposta: L’anàlisi a Java és bàsicament la conversió del valor d’un objecte d’un tipus de dades a un altre tipus de dades. Per exemple, Integer.valueOf (str) converteix 'str' que és un objecte del tipus de dades String a un objecte tipus de dades Integer.
Conclusió
En aquest tutorial, hem explorat com convertir String a int a Java mitjançant els mètodes estàtics de classe enter wrapper següents:
- Integer.parseInt ()
- Integer.valueOf ()
També vam tractar el cas en què es genera NumberFormatException per una cadena de número no vàlida.
Més lectura = >> 8 mètodes per convertir Integer a Sting a Java
=> Exploreu aquí la sèrie d'entrenament de Java simple
Lectura recomanada
- Java String amb buffer de cadenes i tutorial de Generador de cadenes
- Tutorial de cadenes de Java | Mètodes de cadena Java amb exemples
- Java Reverse String: Tutorial amb exemples de programació
- Java String conté () Tutorial de mètode amb exemples
- Java String length () Mètode amb exemples
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Java Integer i Java BigInteger Class amb exemples
- Mètode Java substring (): tutorial amb exemples