在嵌套循环中跟踪计数器

时间:2016-08-19 14:41:10

标签: c# c#-4.0 .net-4.5

我有以下循环。此循环遍历一系列书籍,并对签入和签出日期进行一些逻辑检查。然后它返回一个新对象。它还包含书名

直到它到达集合的末尾才能正常工作。然后我的计数器似乎变得不同步,它变成了无限循环。我尝试过不同的游戏,但我无法让它正常工作。

有人可以注意看这是否有意义,或者我做错了什么?

谢谢!

    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);

1 个答案:

答案 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) 的最后一本书

相关问题