我有以下循环。此循环遍历一系列书籍,并对签入和签出日期进行一些逻辑检查。然后它返回一个新对象。它还包含书名
直到它到达集合的末尾才能正常工作。然后我的计数器似乎变得不同步,它变成了无限循环。我尝试过不同的游戏,但我无法让它正常工作。
有人可以注意看这是否有意义,或者我做错了什么?
谢谢!
private static readonly TimeSpan gracePeriodTimeSpan = TimeSpan.Parse("23:00");
//current posistion in books collection
currentPos = pos % books.Count;
//posistion to stop at
var stopPos = books.Count;
do
{
//start is current posistion
var startPos = pos;
//assign the next posistion
var nextPos = (pos + 1) % books.Count;
bookTitle = bookTitle + ";" + books[pos].Title;
//loop until we hit the stop posistion - check book CheckInDate/CheckOutDate proximity
while ((nextPos != stopPos || nextPos !=0) && books[pos].CheckInDate + gracePeriodTimeSpan >= books[nextPos].CheckOutDate)
{
pos = nextPos;
nextPos = (pos + 1) % books.Count;
}
bookTitle = bookTitle + ";" + books[pos].Title;
//return new book checkout object
yield return
CreateNewBookCheckout(bookTitle, books[pos], books[startPos].CheckOutDate,
books[pos].CheckInDate);
bookTitle = "";
pos = nextPos;
//keep going til we hit the stop posistion
} while (pos != stopPos);
答案 0 :(得分:1)
快速观察一下:
您的pos
正在更改为nextPos
(pos + 1) % books.Count
。
此操作将始终返回[0 and books.Count - 1]
与stopPos = books.Count
之间的值,而stopPos
会产生无限循环。
也许您需要将books.Count-1
切换为 tokenized_text=nltk.word_tokenize(text)
st = StanfordPOSTagger(path_pos_models,path_to_jar=path_pos_jar)
POStagged_text = st.tag(tokenized_text)
的最后一本书