JavaScript ile yapılan hesap makinesi doğru çalışmıyor

JavaScript:
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.
 
JavaScript:
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.

Cevap için teşekkürler. Javascript'i yeni yeni öğreniyorum diyebilirim, bir örnek tarzı bir şey ile gösterme şansınız var mı dediğinizi?
 
Cevap için teşekkürler. Javascript'i yeni yeni öğreniyorum diyebilirim, bir örnek tarzı bir şey ile gösterme şansınız var mı dediğinizi?
İ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.
Buna ek olarak, parçaladıktan sonra işlem önceliğine göre işlemleri gerçekleştirmen gerekiyor.
 

Yeni konular

Geri
Yukarı