我正在练习一个简单的while循环。购买手机的费用仅为200,直到我的银行账户达到500,但由于它先购买手机,因此只知道你购买手机后价格跌至500以下。
在我的代码中,它会在bankaccountmoney变量为400之前购买:
var bankaccountmoney = 2000;
var phonesbought = 0;
var phonecost = 200;
while (bankaccountmoney > 500) {
phonesbought = phonesbought + 1;
bankaccountmoney = bankaccountmoney - phonecost;
console.log("money: " + bankaccountmoney + " phonesbought: " + phonesbought);
}
答案 0 :(得分:1)
while (bankaccountmoney - phonecost >= 500) {
...
}
答案 1 :(得分:1)
另一种方法,使用一些实用功能。我不喜欢在while
谓词中做数学。方式太容易被误读了。
const phoneCost = 200;
const targetSavings = 500;
// Can I afford to buy something, given target savings, purchase price,
// and current funds?
const canAffordPurchase = target => purchase => funds =>
(funds - purchase >= target);
// Can I afford to buy this phone in particular?
const canAffordPhone = canAffordPurchase(targetSavings)(phoneCost);
let availableFunds = 2000;
let phonesBought = 0;
// Buy as many phones as I can afford.
while(canAffordPhone(availableFunds)) {
phonesBought += 1;
availableFunds -= phoneCost;
console.log(`money: ` + availableFunds + " phonesBought: " + phonesBought);
}
答案 2 :(得分:0)
var bankaccountmoney = 2000;
var phonesbought = 0;
var phonecost = 200;
while (bankaccountmoney >= (500 + phonecost)) {
phonesbought++;
bankaccountmoney -= phonecost;
console.log("money left: " + bankaccountmoney + " phonesbought: " + phonesbought);
}
如果您将100作为手机费用
,这是一个片段
var bankaccountmoney = 2000;
var phonesbought = 0;
var phonecost = 100;
while (bankaccountmoney >= (500 + phonecost)) {
phonesbought++;
bankaccountmoney -= phonecost;
console.log("money left: " + bankaccountmoney + " phonesbought: " + phonesbought);
}