如何确保我的while循环不会破坏我的状况?

时间:2017-03-31 16:12:50

标签: javascript while-loop

我正在练习一个简单的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);
}

3 个答案:

答案 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);
}