Ios 返回错误输出的Swift函数
我创建了一个函数,可以打印学生所在的位置-课程、长休息或短休息(以及哪个短休息) 功能参数包括:Ios 返回错误输出的Swift函数,ios,swift,Ios,Swift,我创建了一个函数,可以打印学生所在的位置-课程、长休息或短休息(以及哪个短休息) 功能参数包括: shortBreak - duration of short break longBreak - duration of long break lesson - after which lesson is long break time - the time where students are located 我测试函数的参数是 currently(shor
shortBreak - duration of short break
longBreak - duration of long break
lesson - after which lesson is long break
time - the time where students are located
我测试函数的参数是
currently(shortBreak: 5, longBreak: 15, lesson: 3, time: "10:37)
应该如此
8:00 - 8:45 - lesson
8:45 - 8:50 - short break
8:50 - 9:35 - lesson
9:35 - 9:40 - short break
9:40 - 10:25 - lesson
10:25 - 10:40 - long break (after 3.lesson is long break)
if currentMinute >= 60 {
currentHours += 1
currentMinute = currentMinute - 60
}
这意味着学生们目前正在长时间休息,但我的输出显示他们正在上课
我再次检查了代码,但我找不到哪里错了
还有,有没有更好的方法来操纵时间参数
import UIKit
enum current {
case lesson
case shortBreak
case longBreak
}
func currently(shortBreak: Int, longBreak: Int, lesson: Int, time:String){
var shortBreakCounter: Int = 0
var currentLesson: Int = 1
var currentHours: Int = 8
var currentMinute: Int = 0
var currentCase: current = .lesson
let minute: Int = Int(time.suffix(2)) ?? 0
let hour: Int = Int(time.prefix(2)) ?? 0
if(checkValid(hour: hour, minute: minute)){
print("Invalid time")
}
else {
while isInRange(hour: currentHours, minute: currentMinute) {
currentCase = .lesson
currentMinute += 45
if currentMinute >= 60 {
currentHours += 1
currentMinute = 0
}
if currentLesson == lesson {
currentCase = .longBreak
currentMinute += longBreak
if currentMinute >= 60 {
currentHours += 1
currentMinute = 0
}
} else{
currentCase = .shortBreak
currentMinute += shortBreak
shortBreakCounter += 1
if currentMinute >= 60 {
currentHours += 1
currentMinute = 0
}
}
currentLesson += 1
}
switch currentCase {
case .shortBreak:
print("Students are on \(shortBreakCounter) short break")
case .longBreak:
print("Students are on long break")
default:
print("Students are on lesson")
}
}
}
func checkValid(hour: Int, minute:Int) -> Bool {
if hour >= 16 || hour < 8 {
return true
} else if minute > 59 || minute < 0 {
return true
}
return false
}
func isInRange(hour: Int, minute: Int) -> Bool{
if 8..<16 ~= hour && 0..<60 ~= minute {
return false
}
return true
}
currently(shortBreak: 5, longBreak: 15, lesson: 3, time: "10:37")
导入UIKit
枚举电流{
案例课
案例短路
凯斯隆布雷克
}
func当前(短中断:Int,长中断:Int,课程:Int,时间:String){
var shortBreakCounter:Int=0
var currentLesson:Int=1
var当前小时数:Int=8
var currentMinute:Int=0
var currentCase:current=.lesson
分钟:Int=Int(时间后缀(2))??0
让小时数:Int=Int(时间前缀(2))??0
如果(检查有效(小时:小时,分钟:分钟)){
打印(“无效时间”)
}
否则{
当isInRange(小时:当前小时,分钟:当前分钟){
当前案例=.lesson
当前分钟+=45
如果当前分钟>=60{
当前小时数+=1
当前分钟=0
}
如果当前课程==课程{
currentCase=.longBreak
currentMinute+=longBreak
如果当前分钟>=60{
当前小时数+=1
当前分钟=0
}
}否则{
currentCase=.shortBreak
currentMinute+=短路
短路计数器+=1
如果当前分钟>=60{
当前小时数+=1
当前分钟=0
}
}
当前课程+=1
}
开关电流箱{
案例.短接:
打印(“学生在\(短路计数器)短路”)
案例.朗布雷克:
打印(“学生长时间休息”)
违约:
打印(“学生正在上课”)
}
}
}
func checkValid(小时:整数,分钟:整数)->Bool{
如果小时>=16 | |小时<8{
返回真值
}否则,如果分钟>59 | |分钟<0{
返回真值
}
返回错误
}
func-isInRange(小时:整数,分钟:整数)->Bool{
如果checkValid为true,则If8..isInRange始终返回false。您总是得到默认的currentCase(第一课)
“编辑时间参数”的更好方法是使用日期
if currentMinute >= 60 {
currentHours += 1
currentMinute = 0
}
这是错误的,您应该将currentMinute
设置为当前值-60
想象一下,如果该值为75,则由于将其设置为0,15分钟已经过去
应该是
8:00 - 8:45 - lesson
8:45 - 8:50 - short break
8:50 - 9:35 - lesson
9:35 - 9:40 - short break
9:40 - 10:25 - lesson
10:25 - 10:40 - long break (after 3.lesson is long break)
if currentMinute >= 60 {
currentHours += 1
currentMinute = currentMinute - 60
}
目前(shortBreak:5,Longbbreak:15,lesson:3,time:“10:37)
,你怎么能断定这是一次长时间休息?请解释一下,作为问题的一部分。我编辑了问题这看起来很脆弱,我会考虑创建一些自定义类型保存数据和逻辑。类似于某种模式结构,由另一种类型的集合组成,或者只是一个带有开始时间、持续时间等的自定义类型,链接到一个链表(如链表)上