【发布时间】:2020-05-18 22:37:50
【问题描述】:
我对 Swift 编码非常陌生,现在我正在尝试编写一个程序,它只需要预算和一些餐馆,然后尝试根据剩余的预算量来确定你要吃什么。似乎我的代码应该可以工作,但是由于某种原因,当它在一定次数的迭代后进入 while 循环时,它无法识别何时 totalPrice 不再大于预算。如果我在 while 循环的末尾放置一个 if 条件,验证 totalPrice 是否大于预算,它将识别它不是,然后执行我放在花括号中的任何内容,但不会离开 while 循环。我真的对出了什么问题感到困惑,并且非常感谢一些帮助理解我的代码出了什么问题。非常感谢您的帮助!
import UIKit
var prices = [30,10.99,10.5,11.7,13.99,7.99,8.99,0]
var tips = [0.20,0.18,0.18,0.18,0.18,0.15,0.15,0.0]
var restaurants = ["Salty Snow","Kerby Lane","Milto's","Trudy's","Madam Mam's","Vert's","Teji's","Home"]
var daysOfWeek = ["Sunday", "Monday", "Tuesday","Wednesday", "Thursday", "Friday", "Saturday"]
let taxRate = 0.0825
var budget = 50.0
for i in 1...14{
print("Week \(i)")
for day in daysOfWeek {
var randInt = Int.random(in:0..<8)
var totalPrice = prices[randInt]+(prices[randInt]*taxRate)+(prices[randInt]*tips[randInt])
while totalPrice > budget {
var randInt = Int.random(in:0..<8)
var totalPrice = prices[randInt]+(prices[randInt]*taxRate)+(prices[randInt]*tips[randInt])
}
print(totalPrice, randInt, budget)
var place = restaurants[randInt]
budget = budget - totalPrice
print("\(day) meal: \(place), budget now \(budget)")
}
print()
budget += 50
}
【问题讨论】:
-
你想实现什么兄弟?从那么多循环中
-
您在 while 循环中创建了一个新的
totalPrice变量,因此它与您在while循环的条件中使用的不同。在while循环内将var totalPrice = ...更改为totalPrice = ...。对于这种情况,使用调试器将是一件好事。投票结束这是一个错字。 -
是的,我是个白痴,非常感谢
-
嗯,我们都会不时犯一些简单的错误,就像我说的那样,调试器是发现这些错误的好工具。顺便说一句,你对
randInt做同样的事情,是故意的吗?
标签: ios swift while-loop infinite-loop