JavaScript无法正确执行
晚上好,我正在使用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');
有人可以帮我吗?
谢谢。
回答如下:听起来好像您想将多余的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 * 0.75) / aantalKinderen < 25) {
kindergeld = kindergeld;
}
}
window.alert(String('Het kindergeld bedraagt ') + String(kindergeld)+'\n');
JavaScript无法正确执行
晚上好,我正在使用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');
有人可以帮我吗?
谢谢。
回答如下:听起来好像您想将多余的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 * 0.75) / aantalKinderen < 25) {
kindergeld = kindergeld;
}
}
window.alert(String('Het kindergeld bedraagt ') + String(kindergeld)+'\n');
发布评论