Javascript не выполняется правильно - PullRequest
0 голосов
/ 29 апреля 2020

Добрый вечер, я использую Blockly для обучения программированию. В упражнении часть кода выполнена неправильно. Если «maandloon» выше> 2000, тогда «Kindergeld» сокращается на 25%. Однако, если результат после снижения ниже 25 евро на ребенка, то никакого снижения не происходит. Проблема в том, что при использовании maandloon> 2000 в расчетах по-прежнему используется 25%, даже если в результате более низкое значение результата ниже 25 евро на ребенка.

Это мой код:

var aantalKinderen, maandloon, kindergeld, kindergeldBasis, toeslag3ekind, toeslag5ekind, i;
do {
aantalKinderen=parseInt((parseFloat((output = window.prompt('Hoeveel kinderen?')) ? output : "")));
var blocktype_number = true;
if (output == null) {
    window.alert("No empty input allowed");
    break;
    }
} while(isNaN(aantalKinderen));
do {
maandloon=(parseFloat((output = window.prompt('Wat is het maandloon?')) ? output : ""));
var blocktype_number = true;
if (output == null) {
    window.alert("No empty input allowed");
    break;
    }
} while(isNaN(maandloon));
kindergeldBasis = 25;
toeslag3ekind = 12.5;
toeslag5ekind = 7.5;
kindergeld = kindergeldBasis * aantalKinderen;
if (aantalKinderen > 2) {
  kindergeld = kindergeldBasis * aantalKinderen + (aantalKinderen - 2) * toeslag3ekind;
}
if (aantalKinderen > 4) {
  kindergeld = kindergeldBasis * aantalKinderen + (aantalKinderen - 2) * toeslag3ekind + (aantalKinderen - 4) * toeslag5ekind;
}
if (maandloon <= 500) {
  kindergeld = kindergeld * 1.25;
}
if (maandloon > 2000) {
  kindergeld = kindergeld * 0.75;
} else {
  if ((kindergeld * 0.75) / aantalKinderen < 25) {
      kindergeld = kindergeld;
  }
}
window.alert(String('Het kindergeld bedraagt ') + String(kindergeld)+'\n');

Может кто-то помогите мне?

Спасибо.

1 Ответ

0 голосов
/ 29 апреля 2020

Судя по тому, как вы хотите перенести свою дополнительную if проверку в оператор > 2000. Иначе это не сработает. Ваше if else утверждение является линейным. Он не достигнет вашего else после > 2000, если только условие не соответствует ни одному из предыдущих операторов if, а значение меньше 2000. Оно не выполняется независимо от того, было ли значение изменено предыдущим if состояние.

var aantalKinderen, maandloon, kindergeld, kindergeldBasis, toeslag3ekind, toeslag5ekind, i;
do {
aantalKinderen=parseInt((parseFloat((output = window.prompt('Hoeveel kinderen?')) ? output : "")));
var blocktype_number = true;
if (output == null) {
    window.alert("No empty input allowed");
    break;
    }
} while(isNaN(aantalKinderen));
do {
maandloon=(parseFloat((output = window.prompt('Wat is het maandloon?')) ? output : ""));
var blocktype_number = true;
if (output == null) {
    window.alert("No empty input allowed");
    break;
    }
} while(isNaN(maandloon));
kindergeldBasis = 25;
toeslag3ekind = 12.5;
toeslag5ekind = 7.5;
kindergeld = kindergeldBasis * aantalKinderen;
if (aantalKinderen > 2) {
  kindergeld = kindergeldBasis * aantalKinderen + (aantalKinderen - 2) * toeslag3ekind;
}
if (aantalKinderen > 4) {
  kindergeld = kindergeldBasis * aantalKinderen + (aantalKinderen - 2) * toeslag3ekind + (aantalKinderen - 4) * toeslag5ekind;
}
if (maandloon <= 500) {
  kindergeld = kindergeld * 1.25;
}
if (maandloon > 2000) {
  kindergeld = kindergeld * 0.75;
   if (kindergeld / aantalKinderen < 25) {
      kindergeld = 25;
  }
} 
window.alert(String('Het kindergeld bedraagt ') + String(kindergeld)+'\n');
...