Πρόγραμμα Java για έλεγχο εάν μια συμβολοσειρά είναι αριθμητική

Σε αυτό το πρόγραμμα, θα μάθετε διαφορετικές τεχνικές για να ελέγξετε αν μια συμβολοσειρά είναι αριθμητική ή όχι σε Java.

Για να κατανοήσετε αυτό το παράδειγμα, θα πρέπει να γνωρίζετε τις ακόλουθες εφαρμογές προγραμματισμού Java:

  • Συμβολοσειρά Java
  • Διαχείριση εξαιρέσεων Java

Παράδειγμα 1: Ελέγξτε εάν μια συμβολοσειρά είναι αριθμητική

 public class Numeric ( public static void main(String() args) ( String string = "12345.15"; boolean numeric = true; try ( Double num = Double.parseDouble(string); ) catch (NumberFormatException e) ( numeric = false; ) if(numeric) System.out.println(string + " is a number"); else System.out.println(string + " is not a number"); ) )

Παραγωγή

 12345.15 είναι ένας αριθμός

Στο παραπάνω πρόγραμμα, έχουμε μια Stringονομαστική συμβολοσειρά που περιέχει τη συμβολοσειρά που πρέπει να ελεγχθεί. Έχουμε επίσης μια αριθμητική τιμή boolean που αποθηκεύει εάν το τελικό αποτέλεσμα είναι αριθμητικό ή όχι.

Για να ελέγξουμε αν η συμβολοσειρά περιέχει μόνο αριθμούς, στο μπλοκ δοκιμής, χρησιμοποιούμε Doubleτη parseDouble()μέθοδο για να μετατρέψουμε τη συμβολοσειρά σε α Double.

Εάν ρίξει ένα σφάλμα (δηλαδή NumberFormatExceptionσφάλμα), αυτό σημαίνει ότι η συμβολοσειρά δεν είναι αριθμός και ο αριθμητικός έχει οριστεί σε false. Αλλιώς, είναι ένας αριθμός.

Ωστόσο, εάν θέλετε να ελέγξετε εάν για μια σειρά συμβολοσειρών, θα πρέπει να την αλλάξετε σε μια συνάρτηση. Και, η λογική βασίζεται σε ρίψεις εξαιρέσεων, αυτό μπορεί να είναι αρκετά ακριβό.

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

Παράδειγμα 2: Ελέγξτε εάν μια συμβολοσειρά είναι αριθμητική ή δεν χρησιμοποιεί κανονικές εκφράσεις (regex)

 public class Numeric ( public static void main(String() args) ( String string = "-1234.15"; boolean numeric = true; numeric = string.matches("-?\d+(\.\d+)?"); if(numeric) System.out.println(string + " is a number"); else System.out.println(string + " is not a number"); ) )

Παραγωγή

 -1234.15 είναι ένας αριθμός

Στο παραπάνω πρόγραμμα, αντί να χρησιμοποιήσουμε ένα μπλοκ try-catch, χρησιμοποιούμε το regex για να ελέγξουμε αν η συμβολοσειρά είναι αριθμητική ή όχι. Αυτό γίνεται χρησιμοποιώντας τη matches()μέθοδο του String .

Στη matches()μέθοδο,

  • -?επιτρέπει μηδέν ή περισσότερους -για αρνητικούς αριθμούς στη συμβολοσειρά.
  • \d+ελέγχει τη συμβολοσειρά πρέπει να έχει τουλάχιστον 1 ή περισσότερους αριθμούς ( \d)
  • (\.\d+)?επιτρέπει μηδέν ή περισσότερο του δεδομένου μοτίβου (\.\d+)στο οποίο
    • \.ελέγχει εάν η συμβολοσειρά περιέχει .(δεκαδικά σημεία) ή όχι
    • Εάν ναι, πρέπει να ακολουθείται από τουλάχιστον έναν ή περισσότερους αριθμούς \d+.

ενδιαφέροντα άρθρα...