JavaScript无法正确执行

时间:2020-04-29 19:13:07

标签: javascript blockly

晚上好, 我正在使用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 :(得分:0)

听起来好像您想将多余的if移到> 2000语句中。否则它将不会触发。您的if else语句是线性的。除非条件与先前的if语句中的任何一个都不匹配且该值小于2000,否则它不会在else之后到达您的> 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');