Memeriksa Apakah Suatu String Merupakan Bilangan di Java
Bagus Aji Santoso 21 Oktober 2016
Saat membuat program seringkali kita harus melakukan pemeriksaan apakah suatu String merupakan bilangan atau bukan. Contohnya apabila program kita menerima masukan umur kita harus memastikan bahwa nilai yang dimasukkan merupakan bilangan bukan karakter-karakter lain. Permasalahan ini dapat dipecahkan dengan membuat fungsi pemeriksa. Membuat fungsi pemeriksa bilangan bulat bukanlah tugas yang sulit, namun apabila bilangan yang perlu diperiksa ternyata lebih kompleks (misalnya meliputi bilangan oktal, hexadesimal, tanda positif - negatif, format bilangan Long, dll.) tentu membuat fungsi pemeriksa yang komprehensif akan menghabiskan waktu kita.
Pembaca tentu sering mendengar istilah don't reinvent the wheel. Apabila ada orang lain yang telah memecahkan permasalahan yang sama dengan yang ingin kita selesaikan, maka akan lebih baik jika kita menggunakan implementasi yang telah ada. Apalagi jika implementasi tersebut telah teruji. Oleh karena itu, daripada harus membuat ulang fungsi pemeriksa bilangan untuk permasalahan di atas, kita dapat menggunakan method isNumeric atau isNumber yang tersedia dari pustaka Apache Commons Lang API.
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; public class NumericNumber { public static void main(String[] args) { System.out.println("isNumeric:"); System.out.println( "StringUtils.isNumeric(null) = " + StringUtils.isNumeric(null) + "\n" + "StringUtils.isNumeric(\"\") = " + StringUtils.isNumeric("") + "\n" + "StringUtils.isNumeric(\" \") = " + StringUtils.isNumeric(" ") + "\n" + "StringUtils.isNumeric(\"123\") = " + StringUtils.isNumeric("123") + "\n" + "StringUtils.isNumeric(\"ab2c\") = " + StringUtils.isNumeric("ab2c") + "\n" + "StringUtils.isNumeric(\"-123\") = " + StringUtils.isNumeric("-123") + "\n" + "StringUtils.isNumeric(\"+123\") = " + StringUtils.isNumeric("+123") + "\n" + "StringUtils.isNumeric(\"12 3\") = " + StringUtils.isNumeric("12 3") + "\n" + "StringUtils.isNumeric(\"12-3\") = " + StringUtils.isNumeric("12-3") + "\n" + "StringUtils.isNumeric(\"12.3\") = " + StringUtils.isNumeric("12.3") + "\n" ); System.out.println("isNumber:"); System.out.println( "NumberUtils.isNumber(null) = " + NumberUtils.isNumber(null) + "\n" + "NumberUtils.isNumber(\"\") = " + NumberUtils.isNumber("") + "\n" + "NumberUtils.isNumber(\" \") = " + NumberUtils.isNumber(" ") + "\n" + "NumberUtils.isNumber(\"123\") = " + NumberUtils.isNumber("123") + "\n" + "NumberUtils.isNumber(\"ab2c\") = " + NumberUtils.isNumber("ab2c") + "\n" + "NumberUtils.isNumber(\"-123\") = " + NumberUtils.isNumber("-123") + "\n" + "NumberUtils.isNumber(\"+123\") = " + NumberUtils.isNumber("+123") + "\n" + "NumberUtils.isNumber(\"12 3\") = " + NumberUtils.isNumber("12 3") + "\n" + "NumberUtils.isNumber(\"12-3\") = " + NumberUtils.isNumber("12-3") + "\n" + "NumberUtils.isNumber(\"12.3\") = " + NumberUtils.isNumber("12.3") + "\n" ); } }
Program di atas akan memberikan keluaran seperti yang terlihat di bawah ini:
isNumeric: StringUtils.isNumeric(null) = false StringUtils.isNumeric("") = false StringUtils.isNumeric(" ") = false StringUtils.isNumeric("123") = true StringUtils.isNumeric("ab2c") = false StringUtils.isNumeric("-123") = false StringUtils.isNumeric("+123") = false StringUtils.isNumeric("12 3") = false StringUtils.isNumeric("12-3") = false StringUtils.isNumeric("12.3") = false isNumber: NumberUtils.isNumber(null) = false NumberUtils.isNumber("") = false NumberUtils.isNumber(" ") = false NumberUtils.isNumber("123") = true NumberUtils.isNumber("ab2c") = false NumberUtils.isNumber("-123") = true NumberUtils.isNumber("+123") = false NumberUtils.isNumber("12 3") = false NumberUtils.isNumber("12-3") = false NumberUtils.isNumber("12.3") = true
Dari keluaran di atas kita dapat melihat bahwa method isNumeric dan isNumber dapat menyelesaikan permasalahan yang kita hadapi. Perbedaan antara keduanya adalah isNumeric hanya memeriksa apakah String yang diberikan berisi bilangan cacah tanpa mendukung tanda positif atau negatif, koma, serta karakter yang menunjukkan tipe data Long, Double, float, dll. sedangkan isNumber mendukung berbagai macam tanda bilangan tersebut.
Pustaka Commons Lang dapat diunduh di sini dan dokumentasi lengkapnya dapat dibaca di sini.
Referensi: