【问题标题】:Program breaking block in sorting algorithm排序算法中的程序中断块
【发布时间】:2020-07-31 15:43:37
【问题描述】:

我正在为链表样式程序编写排序算法,其中列表中的元素包含 CampSite 对象。获取站点类型返回 1 或 0,其中 0 站点需要位于列表的前面。排序中还需要其他因素,但它们都不会导致程序构建失败。不管什么原因,sortList() 方法中的这个块会导致程序永远无法到达 GUI,尽管 IntelliJ 说“构建成功完成”。

while (current != null) {
            index = current.getNext();
            while (index != null) {
                if (current.getData().getSiteType() > index.getData().getSiteType()) {
                    temp = current.getData();
                    current.setData(index.getData());
                    index.setData(temp);
                }
            }
        }

谁能帮我理解这是为什么?

【问题讨论】:

  • 这是一个无限循环。如果current 不为空,则循环内的任何内容都不会使其为空。然后你的内部循环中的index 也有同样的问题。

标签: java sorting linked-list


【解决方案1】:

您从未在 while 循环中增加 currentindex,这将使其成为无限循环。尝试增加 index 和 current 的值,以便可能存在循环。

以下代码更改可能会对您有所帮助

       while (current != null) {
            index = current.getNext();
            while (index != null) {
                if (current.getData().getSiteType() > index.getData().getSiteType()) {
                    temp = current.getData();
                    current.setData(index.getData());
                    index.setData(temp);
                }
                index = index.getNext(); // increment the index of the list
            }
            current = current.getNext(); // increment the current of the list to avoid infinite loop
        }

【讨论】:

    猜你喜欢
    • 2015-01-12
    • 2013-05-17
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    相关资源
    最近更新 更多