Java-ohjelma tarkistaa, onko merkkijono numeerinen

Tässä ohjelmassa opit erilaisia ​​tekniikoita tarkistaaksesi, onko merkkijono numeerinen vai ei Java-kielellä.

Tämän esimerkin ymmärtämiseksi sinulla on oltava tieto seuraavista Java-ohjelmointiaiheista:

  • Java-merkkijono
  • Java-poikkeusten käsittely

Esimerkki 1: Tarkista, onko merkkijono numeerinen

 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"); ) )

Tuotos

 12345.15 on luku

Yllä olevassa ohjelmassa meillä on Stringnimetty merkkijono, joka sisältää tarkistettavan merkkijonon. Meillä on myös looginen arvo numeerinen, joka tallentaa, jos lopputulos on numeerinen vai ei.

Tarkistaa, jos merkkijono sisältää vain numeroita, että yrittää estää, käytämme Doublen parseDouble()menetelmää muuntaa merkkijonon Double.

Jos se heittää virheen (eli NumberFormatExceptionvirheen), se tarkoittaa, että merkkijono ei ole numero ja numero on asetettu false. Muuten, se on numero.

Jos haluat kuitenkin tarkistaa, onko joissakin merkkijonoissa, sinun on vaihdettava se funktioksi. Ja logiikka perustuu heittää poikkeuksia, se voi olla melko kallista.

Sen sijaan voimme käyttää säännöllisten lausekkeiden voimaa tarkistaa, onko merkkijono numeerinen vai ei, kuten alla on esitetty.

Esimerkki 2: Tarkista, onko merkkijono numeerinen vai ei, käytäkö säännöllisiä lausekkeita (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"); ) )

Tuotos

 -1234.15 on luku

Yllä olevassa ohjelmassa yritämme kiinni-lohkon sijasta käyttää regexiä tarkistaaksemme, onko merkkijono numeerinen vai ei. Tämä tehdään Stringin matches()menetelmällä.

Tässä matches()menetelmässä,

  • -?sallii nollan tai enemmän -merkkijonon negatiivisille numeroille.
  • \d+tarkistaa, että merkkijonossa on oltava vähintään yksi tai useampi numero ( \d).
  • (\.\d+)?sallii nollan tai enemmän annetusta kuviosta (\.\d+), jossa
    • \.tarkistaa, sisältääkö merkkijono .(desimaalipisteitä) vai ei
    • Jos kyllä, sen jälkeen tulee olla vähintään yksi tai useampi numero \d+.

Mielenkiintoisia artikkeleita...