While 循环中的问题:只将一个事物添加到列表中一次
Problems in the While Loop: Adding a thing to the list only once
我想预订餐厅。只要客人在酒店,客人就应该在早上、中午和晚上吃饭。为此,我有一个 booking_of_restaurant
class。在进行酒店预订的表格中,随后还预订了有关期间的餐厅。
我的代码仍然预订太多——吃一顿早餐、一顿午餐和一顿晚餐就足够了。我想不出怎么解决。
开始日期和结束日期都在带有时间的文本框中给出。因此时间不是默认的12A.M.
Restaurant_reservations As New List(Of booking_of_restaurant)
Private Sub Button_addGuest_Click(sender As Object, e As EventArgs) Handles Button_addGuest.Click
Dim currentDate As Date = Start_date
While currentDate < End_date
If currentDate.Hour >= 7 AndAlso currentDate.Hour < 11 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.breakfast,
characteristic))
ElseIf currentDate.Hour > 11 AndAlso currentDate.Hour < 14 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.lunch,
characteristic))
ElseIf currentDate.Hour >= 18 AndAlso currentDate.Hour < 22 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.dinner,
characteristic))
End If
currentDate = currentDate.AddHours(1)
End While
End Sub
我试过了,但是错误是
"booking_of_restaurant.kind_of_meals" is an enumeration type and cannot be used as an expression.
If Not Restaurant_reservations.Last().kind_of_meals = booking_of_restaurant.kind_of_meals.breakfast Then
End If
您的步长为 1 小时,因此循环进入例如第一个块十次(在 1:00、2:00、3:00、...) .所以可能最简单的方法是,在预订完成后进入范围的上限
Private Sub Button_addGuest_Click(sender As Object, e As EventArgs) Handles Button_addGuest.Click
Dim currentDate As Date = Start_date
Dim addHours as Integer = 1
While currentDate < End_date
If currentDate.Hour > 0 AndAlso currentDate.Hour < 11 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.breakfast,
characteristic))
addHours = 11 - currentDate.Hour
ElseIf currentDate.Hour > 11 AndAlso currentDate.Hour < 14 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.lunch,
characteristic))
addHours = 14 - currentDate.Hour
ElseIf currentDate.Hour >= 18 AndAlso currentDate.Hour < 22 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.dinner,
characteristic))
addHours = 22 - currentDate.Hour
End If
currentDate = currentDate.AddHours(addHours)
End While
End Sub
我想预订餐厅。只要客人在酒店,客人就应该在早上、中午和晚上吃饭。为此,我有一个 booking_of_restaurant
class。在进行酒店预订的表格中,随后还预订了有关期间的餐厅。
我的代码仍然预订太多——吃一顿早餐、一顿午餐和一顿晚餐就足够了。我想不出怎么解决。
开始日期和结束日期都在带有时间的文本框中给出。因此时间不是默认的12A.M.
Restaurant_reservations As New List(Of booking_of_restaurant)
Private Sub Button_addGuest_Click(sender As Object, e As EventArgs) Handles Button_addGuest.Click
Dim currentDate As Date = Start_date
While currentDate < End_date
If currentDate.Hour >= 7 AndAlso currentDate.Hour < 11 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.breakfast,
characteristic))
ElseIf currentDate.Hour > 11 AndAlso currentDate.Hour < 14 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.lunch,
characteristic))
ElseIf currentDate.Hour >= 18 AndAlso currentDate.Hour < 22 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.dinner,
characteristic))
End If
currentDate = currentDate.AddHours(1)
End While
End Sub
我试过了,但是错误是
"booking_of_restaurant.kind_of_meals" is an enumeration type and cannot be used as an expression.
If Not Restaurant_reservations.Last().kind_of_meals = booking_of_restaurant.kind_of_meals.breakfast Then
End If
您的步长为 1 小时,因此循环进入例如第一个块十次(在 1:00、2:00、3:00、...) .所以可能最简单的方法是,在预订完成后进入范围的上限
Private Sub Button_addGuest_Click(sender As Object, e As EventArgs) Handles Button_addGuest.Click
Dim currentDate As Date = Start_date
Dim addHours as Integer = 1
While currentDate < End_date
If currentDate.Hour > 0 AndAlso currentDate.Hour < 11 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.breakfast,
characteristic))
addHours = 11 - currentDate.Hour
ElseIf currentDate.Hour > 11 AndAlso currentDate.Hour < 14 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.lunch,
characteristic))
addHours = 14 - currentDate.Hour
ElseIf currentDate.Hour >= 18 AndAlso currentDate.Hour < 22 Then
Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
booking_of_restaurant.kind_of_meals.dinner,
characteristic))
addHours = 22 - currentDate.Hour
End If
currentDate = currentDate.AddHours(addHours)
End While
End Sub