Java String to Int - Πώς να μετατρέψετε μια συμβολοσειρά σε έναν ακέραιο

Τα συμβολοσειρά αντικείμενα αντιπροσωπεύονται ως μια σειρά χαρακτήρων.

Εάν έχετε εργαστεί στο Java Swing, διαθέτει στοιχεία όπως το JTextField και το JTextArea τα οποία χρησιμοποιούμε για να λάβουμε τα στοιχεία μας από το GUI. Παίρνει τη συμβολή μας ως συμβολοσειρά.

Αν θέλουμε να κάνουμε μια απλή αριθμομηχανή χρησιμοποιώντας Swing, πρέπει να καταλάβουμε πώς να μετατρέψουμε μια συμβολοσειρά σε ακέραιο. Αυτό μας οδηγεί στην ερώτηση - πώς μπορούμε να μετατρέψουμε μια συμβολοσειρά σε ακέραιο;

Στην Java, μπορούμε να χρησιμοποιήσουμε Integer.valueOf()και Integer.parseInt()να μετατρέψουμε μια συμβολοσειρά σε ακέραιο.

1. Χρησιμοποιήστε το Integer.parseInt () για να μετατρέψετε μια συμβολοσειρά σε έναν ακέραιο

Αυτή η μέθοδος επιστρέφει τη συμβολοσειρά ως πρωτόγονος τύπος int . Εάν η συμβολοσειρά δεν περιέχει έναν έγκυρο ακέραιο, τότε θα ρίξει ένα NumberFormatException.

Έτσι, κάθε φορά που μετατρέπουμε μια συμβολοσειρά σε int, πρέπει να φροντίσουμε αυτήν την εξαίρεση τοποθετώντας τον κώδικα μέσα στο μπλοκ try-catch.

Ας εξετάσουμε ένα παράδειγμα μετατροπής μιας συμβολοσειράς σε int χρησιμοποιώντας Integer.parseInt():

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

Ας προσπαθήσουμε να σπάσουμε αυτόν τον κωδικό εισάγοντας έναν μη έγκυρο ακέραιο:

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

Όπως μπορείτε να δείτε στον παραπάνω κώδικα, προσπαθήσαμε να μετατρέψουμε 25Tσε ακέραιο. Αυτή δεν είναι έγκυρη εισαγωγή. Επομένως, πρέπει να ρίξει ένα NumberFormatException.

Εδώ είναι η έξοδος του παραπάνω κώδικα:

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)

Στη συνέχεια, θα εξετάσουμε πώς να μετατρέψουμε μια συμβολοσειρά σε ακέραιο χρησιμοποιώντας τη Integer.valueOf()μέθοδο.

2. Χρησιμοποιήστε το Integer.valueOf () για να μετατρέψετε μια συμβολοσειρά σε έναν ακέραιο

Αυτή η μέθοδος επιστρέφει τη συμβολοσειρά ως ακέραιο αντικείμενο . Αν κοιτάξετε την τεκμηρίωση Java, Integer.valueOf()επιστρέφει ένα ακέραιο αντικείμενο που είναι ισοδύναμο με το a new Integer(Integer.parseInt(s)).

Κατά τη χρήση αυτής της μεθόδου, θα τοποθετήσουμε τον κωδικό μας στο μπλοκ δοκιμής. Ας εξετάσουμε ένα παράδειγμα χρησιμοποιώντας τη Integer.valueOf()μέθοδο:

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

Τώρα, ας προσπαθήσουμε να σπάσουμε τον παραπάνω κώδικα εισάγοντας έναν μη έγκυρο ακέραιο αριθμό:

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

Όπως και στο προηγούμενο παράδειγμα, ο παραπάνω κώδικας θα δημιουργήσει μια εξαίρεση.

Εδώ είναι η έξοδος του παραπάνω κώδικα:

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)

Μπορούμε επίσης να δημιουργήσουμε μια μέθοδο για να ελέγξουμε εάν η συμβολοσειρά που έχει περάσει είναι αριθμητική ή όχι πριν χρησιμοποιήσουμε τις παραπάνω μεθόδους.

Έχω δημιουργήσει μια απλή μέθοδο για να ελέγξω αν η συμβολοσειρά που έχει περάσει είναι αριθμητική ή όχι.

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.]+"); } }

Η έξοδος είναι:

true true

Η isNumeric()μέθοδος παίρνει μια συμβολοσειρά ως όρισμα. Πρώτα ελέγχει αν είναι nullή όχι. Μετά από αυτό χρησιμοποιούμε τη matches()μέθοδο για να ελέγξουμε αν περιέχει ψηφία 0 έως 9 και χαρακτήρα τελείας.

Αυτός είναι ένας απλός τρόπος για τον έλεγχο των αριθμητικών τιμών. Μπορείτε να γράψετε ή να αναζητήσετε στο Google για πιο σύνθετες τυπικές εκφράσεις για να καταγράψετε αριθμούς ανάλογα με την περίπτωση χρήσης σας.

Είναι μια βέλτιστη πρακτική να ελέγξετε αν η συμβολοσειρά που έχει περάσει είναι αριθμητική ή όχι πριν προσπαθήσετε να τη μετατρέψετε σε ακέραιο.

Ευχαριστούμε που το διαβάσατε.

Δημοσίευση εικόνας από τον ?? Janko Ferlič στο Unsplash

Μπορείτε να συνδεθείτε μαζί μου στο Medium.

Καλή κωδικοποίηση!