JavaScript
Hata durumlarını yönetme
Bölme hatası ve geçersiz operatör için korumayı eklersin.
Hata durumları: isNaN ile doğrulama
Kullanıcı bir sayı yerine harf girerse ne olur? parseFloat("merhaba") NaN döndürür — yani 'Not a Number'. NaN ile yapılan matematik yine NaN verir, bu yüzden sonucu kontrol etmeliyiz.
isNaN(değer) fonksiyonu bir değerin sayı olup olmadığını söyler: sayı değilse true, sayıysa false döner. Bunu bir if koşulunda kullanırız.
İki sayıyı da kontrol etmek için || (veya) operatörü ile birleştiririz: if (isNaN(first) || isNaN(second)). Geçersizse result'a hata mesajı koyarız.
if/else ile akış kontrolü
Doğrulama başarısız olursa hesaplama yapılmamalıdır. Bunu if/else ile sağlarız: if koşulu geçersiz girişi yakalar, else bloğu ise geçerliyse switch'i çalıştırır.
Böylece switch yalnızca her iki sayı da geçerliyken çalışır. Hata durumunda result zaten hata mesajına ayarlıdır ve switch atlanır.
Sonuç her iki yolda da result değişkenine yazılır, bu yüzden en son tek bir console.log her durumu kapsar.
Uygulama isNaN ile giriş doğrulama ekle
Mevcut kod switch ile hesaplıyor ama geçersiz girişleri kontrol etmiyor. switch'i bir if/else içine al. Önce if (isNaN(first) || isNaN(second)) ile iki sayıyı doğrula; geçersizse result'a bir hata mesajı ata. Geçerliyse mevcut switch else bloğunda çalışsın. En son console.log sonucu yazdırsın.
Örnek çözümü göster
// Kullanıcının girdiği ilk değer
const firstInput = "25";
const operator = "+";
const secondInput = "4";
const first = parseFloat(firstInput);
const second = parseFloat(secondInput);
let result;
if (isNaN(first) || isNaN(second)) {
result = "Hata: geçerli bir sayı girin";
} else {
switch (operator) {
case "+":
result = first + second;
break;
case "-":
result = first - second;
break;
case "*":
result = first * second;
break;
case "/":
result = first / second;
break;
default:
result = "Bilinmeyen işlem";
}
}
console.log("Sonuç: " + result);
Kendini test et
-
Aşağıdakilerden hangisi NaN döndürür?
parseFloat("merhaba")
- parseFloat("42")
- Number("3.14")
- parseFloat("100 metre")
- parseFloat("merhaba")
Cevabı göster
parseFloat("merhaba") — Doğru. 'merhaba' sayıya çevrilemediği için NaN döner.
-
if koşulunu tamamla
____
result = "Hata: geçerli bir sayı girin";
}
Cevabı göster
if (isNaN(first) || isNaN(second)) {
result = "Hata: geçerli bir sayı girin";
}
-
Doğrulama kavramlarını eşleştir
- isNaN
- Değerin sayı olmadığını kontrol eder
- NaN
- Geçersiz sayı işleminin sonucu
- parseFloat
- String'i ondalık sayıya çevirir
- ||
- Mantıksal VEYA
Sıradaki ders: Proje sonu - Hesap makinesi