Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
JavaScript ile yapılan hesap makinesi doğru çalışmıyor
Selam, ben JavaScript ile bir hesap makinesi yaptım, fakat anlayamadığım bir sebepten ötürü doğru çalışmıyor, hesaplamalardan bahsediyorum. Mesela bazı hesaplamalar da sonucu düzgün gösterirken, bazılarında yanlış gösteriyor.
numbers.forEach(numberbtn => {
numberbtn.addEventListener("click", nums);
function nums() {
if (_screen.textContent == "0") {
_screen.textContent = "";
}
_screen.textContent += this.value;
if (selectedOperators == "") {
leftPart = this.value
}
if (selectedOperators != "") {
rightPart = this.value
}
}
});
Problem inputu doğru şekilde alamamanızdan kaynaklanıyor. Örneğin 45+25= girdisi sonuç olarak 10 dönüyor. Aynı şekilde 15+65= girdisi de.
Bunun nedeni leftPart = this.value ve rightPart = this.value satırları. Eşittirden önce basılan son rakam sağ değer, operatörden önce basılan son rakam sol değer oluyor. Haliyle 45+25= girdisi 5+5'in sonucunu dönüyor.
Girdiyi sol, operatör ve sağ olarak üçe ayırmışsınız bu yaklaşım biraz yanlış çünkü kullanıcı 15+5+7= şeklinde bir input oluşturabilir. Eşittir butonuna basıldıktan sonra tüm girdiyi parçalayarak sonuç üretmeniz daha doğru.
numbers.forEach(numberbtn => {
numberbtn.addEventListener("click", nums);
function nums() {
if (_screen.textContent == "0") {
_screen.textContent = "";
}
_screen.textContent += this.value;
if (selectedOperators == "") {
leftPart = this.value
}
if (selectedOperators != "") {
rightPart = this.value
}
}
});
Problem inputu doğru şekilde alamamanızdan kaynaklanıyor. Örneğin 45+25= girdisi sonuç olarak 10 dönüyor. Aynı şekilde 15+65= girdisi de.
Bunun nedeni leftPart = this.value ve rightPart = this.value satırları. Eşittirden önce basılan son rakam sağ değer, operatörden önce basılan son rakam sol değer oluyor. Haliyle 45+25= girdisi 5+5'in sonucunu dönüyor.
Girdiyi sol, operatör ve sağ olarak üçe ayırmışsınız bu yaklaşım biraz yanlış çünkü kullanıcı 15+5+7= şeklinde bir input oluşturabilir. Eşittir butonuna basıldıktan sonra tüm girdiyi parçalayarak sonuç üretmeniz daha doğru.
İki algoritma önereyim, siz beğendiğinizi yapmaya çalışın.
Kullanıcı bir işlem operatörüne basmadığı sürece rakamları ekrana yazdırın. Operatöre bastığı anda ekrandaki değer ilk sayınız olacak. (Bu aşamada işlem butonlarını pasif hale getirirseniz yanlış girdi yapılması önlenmiş olur.) İkinci sayıyı tespit etmek için basılan rakamları farklı bir değişkende tutun. Eşittir butonuna basıldığında sonucu hesaplayabilirsiniz.
Kullanıcı eşittir butonuna basıncaya kadar sadece ekrana yazdırma işlemi yapın. Eşittir butonuna basıldığında girdiyi alın ve operatörlere göre parçalayıp (Girdideki karakterleri tek tek inceleyerek sayıları ve operatörleri tespit etmeniz gerek) sonucu hesaplayın.
Kullanıcı eşittir butonuna basıncaya kadar sadece ekrana yazdırma işlemi yapın. Eşittir butonuna basıldığında girdiyi alın ve operatörlere göre parçalayıp (Girdideki karakterleri tek tek inceleyerek sayıları ve operatörleri tespit etmeniz gerek) sonucu hesaplayın.