Dalam program ini, anda akan mempelajari teknik yang berbeza untuk memeriksa apakah rentetan berangka atau tidak di Java.
Untuk memahami contoh ini, anda harus mempunyai pengetahuan mengenai topik pengaturcaraan Java berikut:
- Rentetan Java
- Pengendalian Pengecualian Java
Contoh 1: Periksa sama ada rentetan berangka
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"); ) )
Pengeluaran
12345.15 adalah nombor
Dalam program di atas, kami mempunyai String
rentetan bernama yang mengandungi rentetan untuk diperiksa. Kami juga mempunyai angka nilai boolean yang menyimpan jika hasil akhirnya berangka atau tidak.
Untuk menyemak sama ada rentetan mengandungi nombor sahaja, dalam blok percubaan, kami menggunakan Double
's parseDouble()
kaedah untuk menukar rentetan kepada Double
.
Sekiranya melemparkan ralat (mis. NumberFormatException
Ralat), itu bermaksud rentetan bukan angka dan angka disetkan ke false
. Lain, itu nombor.
Namun, jika anda ingin memeriksa sebilangan rentetan, anda perlu menukarnya menjadi fungsi. Dan, logiknya berdasarkan pengecualian melemparkan, ini boleh menjadi sangat mahal.
Sebagai gantinya, kita dapat menggunakan kekuatan ungkapan biasa untuk memeriksa apakah rentetan berangka atau tidak seperti yang ditunjukkan di bawah.
Contoh 2: Periksa sama ada rentetan berangka atau tidak menggunakan ungkapan biasa (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"); ) )
Pengeluaran
-1234.15 adalah nombor
Dalam program di atas, alih-alih menggunakan blok try-catch, kami menggunakan regex untuk memeriksa apakah rentetan berangka atau tidak. Ini dilakukan menggunakan matches()
kaedah String .
Dalam matches()
kaedah tersebut,
-?
membenarkan sifar atau lebih-
untuk nombor negatif dalam rentetan.\d+
periksa rentetan mesti mempunyai sekurang-kurangnya 1 atau lebih nombor (\d
).(\.\d+)?
membenarkan sifar atau lebih daripada corak yang diberikan(\.\d+)
di mana\.
memeriksa apakah rentetan mengandungi.
(titik perpuluhan) atau tidak- Sekiranya ya, ia mesti diikuti oleh sekurang-kurangnya satu atau lebih nombor
\d+
.