我在CS课上做了一个更复杂的程序(尽管只是一点点),它根据一些规则进行了一些计算和折扣。它是用Java编写的,并读取并输出到文件中。我正在尝试使用循环在JavaScript中重做它,然后再输入并应用计算。我将在第二个while循环关闭后调用这两个函数。
我的问题是priceCount可以按价格完美地递增,而qty似乎只是吐出一些随机数(但是它们都是输入的倍数),前导0。这是怎么回事?逻辑与priceCount完全相同,但是根本不起作用。我试着移动变量,认为这是一个范围问题,但没有任何效果。
我希望我不要问一个已经回答了很多次的问题。我尝试了广泛的搜索,但这本身就是一种技巧,我很难将我的问题表达为关键字。任何和所有输入将不胜感激。
function discountCalc (price, amount) {
var discount;
if (amount <= 30){
discount = oldPrice * 0.05;
}
else if (amount >= 30 && amount <= 50){
discount = oldPrice * 0.1;
}
else if (amount >= 51 && amount <= 75){
discount = oldPrice * 0.25;
}
else {
discount = oldPrice * 0.4;
}
return discount;
}
function adjust(newPrice, amount){
var adjust;
if (newPrice < 500){
adjust = -20;
}
else if (newPrice >= 500 && amount < 50){
adjust = newPrice * 0.05;
}
else{
adjust = 0;
}
return adjust;
}
var answer = "new", price, amount, customer = 1;
while (answer !== "quit" && answer !== "Quit" && answer !== "q" && answer !== "Q") {
console.log("invoice # 000" + customer);
if (answer == "new" || answer == "New") {
customer = customer + 1;
var another = "yes";
var priceCount = 0;
var qty = 0;
while (another == "yes" || another == "Yes" || another == "y" || another == "Y"){
price = prompt("price?");
amount = prompt("amount?");
qty = qty + amount;
priceCount = priceCount + (price * amount);
console.log("Price: " + price + " Amount: " + amount);
another = prompt("type yes for another, any key to stop");
}
console.log("Total price is: " + priceCount);
console.log("Total items: " + qty);
priceCount = 0;
qty = 0;
}
answer = prompt("new or quit?");
}
console.log("thanks");
答案 0 :(得分:0)
提示返回一个字符串,因此您应该将其转换为数字。 您可以使用parseInt(),parseFloat()或Number()。 parseInt()返回一个整数值,而parseFloat()返回一个浮点数。 Number()可以返回两个值,但是如果提示返回的字符串不等于数字,则返回NaN。检查用户是否提供了无效数据可能很有用。
所以替换
qty = qty + amount
到
qty = qty + Number(amount) //or parseInt(amount), parseFloat(amount)
如果您有其他区域为数字增加金额,则可以执行相同操作。