Java String to Int - Sådan konverteres en streng til et heltal

Strengobjekter er repræsenteret som en streng af tegn.

Hvis du har arbejdet i Java Swing, har den komponenter som JTextField og JTextArea, som vi bruger til at få vores input fra GUI. Det tager vores input som en streng.

Hvis vi vil lave en simpel lommeregner ved hjælp af Swing, skal vi finde ud af, hvordan vi konverterer en streng til et heltal. Dette fører os til spørgsmålet - hvordan kan vi konvertere en streng til et heltal?

I Java kan vi bruge Integer.valueOf()og Integer.parseInt()konvertere en streng til et heltal.

1. Brug Integer.parseInt () til at konvertere en streng til et heltal

Denne metode returnerer strengen som en primitiv type int . Hvis strengen ikke indeholder et gyldigt heltal, kaster den en NumberFormatException.

Så hver gang vi konverterer en streng til en int, er vi nødt til at tage os af denne undtagelse ved at placere koden inde i prøvefangstblokken.

Lad os overveje et eksempel på konvertering af en streng til en int ved hjælp af Integer.parseInt():

 String str = "25"; try{ int number = Integer.parseInt(str); System.out.println(number); // output = 25 } catch (NumberFormatException ex){ ex.printStackTrace(); }

Lad os prøve at bryde denne kode ved at indtaste et ugyldigt heltal:

 String str = "25T"; try{ int number = Integer.parseInt(str); System.out.println(number); } catch (NumberFormatException ex){ ex.printStackTrace(); }

Som du kan se i ovenstående kode, har vi forsøgt at konvertere 25Ttil et heltal. Dette er ikke et gyldigt input. Derfor skal den kaste et NumberFormatException.

Her er output fra ovenstående kode:

java.lang.NumberFormatException: For input string: "25T" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at OOP.StringTest.main(StringTest.java:51)

Dernæst vil vi overveje, hvordan man konverterer en streng til et heltal ved hjælp af Integer.valueOf()metoden.

2. Brug Integer.valueOf () til at konvertere en streng til et heltal

Denne metode returnerer strengen som et heltal-objekt . Hvis du ser på Java-dokumentationen, Integer.valueOf()returnerer et heltal-objekt, der svarer til et new Integer(Integer.parseInt(s)).

Vi placerer vores kode inde i prøvefangstblokken, når vi bruger denne metode. Lad os overveje et eksempel ved hjælp af Integer.valueOf()metoden:

 String str = "25"; try{ Integer number = Integer.valueOf(str); System.out.println(number); // output = 25 } catch (NumberFormatException ex){ ex.printStackTrace(); }

Lad os nu prøve at bryde ovenstående kode ved at indtaste et ugyldigt heltal:

 String str = "25TA"; try{ Integer number = Integer.valueOf(str); System.out.println(number); } catch (NumberFormatException ex){ ex.printStackTrace(); }

I lighed med det foregående eksempel kaster ovenstående kode en undtagelse.

Her er output fra ovenstående kode:

java.lang.NumberFormatException: For input string: "25TA" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.valueOf(Integer.java:766) at OOP.StringTest.main(StringTest.java:42)

Vi kan også oprette en metode til at kontrollere, om den indsendte streng er numerisk eller ikke, før vi bruger ovennævnte metoder.

Jeg har oprettet en enkel metode til at kontrollere, om den indsendte streng er numerisk eller ej.

public class StringTest { public static void main(String[] args) { String str = "25"; String str1 = "25.06"; System.out.println(isNumeric(str)); System.out.println(isNumeric(str1)); } private static boolean isNumeric(String str){ return str != null && str.matches("[0-9.]+"); } }

Outputtet er:

true true

Den isNumeric()metode tager en streng som argument. Først kontrolleres det, om det er nulleller ej. Derefter bruger vi matches()metoden til at kontrollere, om den indeholder cifrene 0 til 9 og et periodetegn.

Dette er en enkel måde at kontrollere numeriske værdier på. Du kan skrive eller søge på Google efter mere avancerede regulære udtryk for at fange numerik afhængigt af din brugssag.

Det er en bedste praksis at kontrollere, om den indsendte streng er numerisk eller ikke, før du prøver at konvertere den til heltal.

Tak fordi du læste.

Indlæg billede af ?? Janko Ferlič på Unsplash

Du kan oprette forbindelse til mig på Medium.

Glad kodning!