Bu programda, bir dizenin Java'da sayısal olup olmadığını kontrol etmek için farklı teknikler öğreneceksiniz.
Bu örneği anlamak için, aşağıdaki Java programlama konuları hakkında bilgi sahibi olmalısınız:
- Java Dizesi
- Java Özel Durum İşleme
Örnek 1: Bir dizenin sayısal olup olmadığını kontrol edin
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"); ) )
Çıktı
12345.15 bir sayıdır
Yukarıdaki programda, String
kontrol edilecek dizeyi içeren adlandırılmış bir dizimiz var. Ayrıca, nihai sonucun sayısal olup olmadığını saklayan sayısal bir boole değerimiz de var.
Dizenin yalnızca sayı içerip içermediğini kontrol etmek için, try bloğunda, dizeyi a'ya dönüştürmek için Double
's parseDouble()
yöntemini kullanırız Double
.
Bir hata (yani NumberFormatException
hata) atarsa , dizenin bir sayı olmadığı ve sayısal değerin olarak ayarlandığı anlamına gelir false
. Aksi takdirde, bu bir sayıdır.
Bununla birlikte, birkaç dizge olup olmadığını kontrol etmek istiyorsanız, bunu bir işleve dönüştürmeniz gerekir. Ve mantık, istisnalar atmaya dayanıyor, bu oldukça pahalı olabilir.
Bunun yerine, aşağıda gösterildiği gibi dizenin sayısal olup olmadığını kontrol etmek için normal ifadelerin gücünü kullanabiliriz.
Örnek 2: Bir dizenin sayısal olup olmadığını veya normal ifadeler kullanıp kullanmadığını kontrol edin (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"); ) )
Çıktı
-1234.15 bir sayıdır
Yukarıdaki programda, bir try-catch bloğu kullanmak yerine, dizenin sayısal olup olmadığını kontrol etmek için regex kullanırız. Bu, String'in matches()
yöntemi kullanılarak yapılır .
İn matches()
yöntemi,
-?
-
dizedeki negatif sayılar için sıfır veya daha fazlasına izin verir .\d+
dizenin en az 1 veya daha fazla sayı içermesi gerektiğini kontrol eder (\d
).(\.\d+)?
sıfır veya verilen bir yapının daha fazla olanak sağlar(\.\d+)
ki burada\.
dizenin.
(ondalık nokta) içerip içermediğini kontrol eder- Evet ise, en az bir veya daha fazla numara takip etmelidir
\d+
.