我打破了Java while()循环-在错误的条件下触发并在正确的条件下冻结

马特

我正在尝试为算法课程编写一个跳过列表,而我的传播方法遇到了问题(一旦在A_prop和B_prop之间找到了插入点,就会调用该问题)。这是代码:

/* The randomized propagation upwards */
private void propagate(SkipNode<T> A_prop, SkipNode<T> B_prop, 
                       SkipNode<T> front_prop, SkipNode<T> end_prop, 
                       SkipNode<T> insert) 
{
    SkipNode<T> clone, rowBelow;
    Random random = new Random();
    float f = random.nextFloat();
    int flip = Math.round(f);

    A_prop.linkRight(insert);
    B_prop.linkLeft(insert);
    rowBelow = insert;

    System.out.println("Flip = " + flip);
    while(flip != 0);
    {
        System.out.println("HEADS");
        clone = insert.clone();

        // Insert node at this level
        A_prop.linkRight(clone);
        B_prop.linkLeft(clone);
        clone.linkDown(rowBelow);

        System.out.println("After Link");
        System.out.println(A_prop.right);
        System.out.println(insert);
        System.out.println(insert.right);
        System.out.println(B_prop);

        if(A_prop.up != null)
        { // Move up a row
            System.out.println("A up");
            A_prop = A_prop.up;
            B_prop = A_prop.right;
            front_prop = front_prop.up;
            end_prop = end_prop.up;
            rowBelow = clone;
        }
        else if(front_prop.up != null)
        {
            System.out.println("Front up");
            while(A_prop.up == null)
            {   // Find the closest node to the left that
                // has a copy in the above level
                A_prop = A_prop.left;
            }

            A_prop = A_prop.up;
            B_prop = A_prop.right;
            front_prop = front_prop.up;
            end_prop = end_prop.up;
            rowBelow = clone;
        }
        else // Create new top level
        {
            System.out.println("New row");
            // Make new terminal nodes
            A_prop = new SkipNode<T>("HEAD");
            B_prop = new SkipNode<T>("TAIL");
            // Link them to the current ones
            front_prop.linkUp(A_prop);
            end_prop.linkUp(B_prop);
            // Update current
            front_prop = front_prop.up;
            end_prop = end_prop.up;
            // Link 'em
            front_prop.linkRight(end_prop);
            // To be sure
            A_prop = front_prop;
            B_prop = end_prop;

            rowBelow = clone;
        }

        f = random.nextFloat();
        flip = Math.round(f);       
    }

    // Don't forget to update the global head and tail for the list
    head = front_prop;
    tail = end_prop;
}

我仍然有一些调试用的println();我在控制台上得到的输出是以下两种情况之一:

情况1:

翻转= 1

情况2:

翻转= 0

在案例1中,程序仍在运行(我需要点击控制台上的红色小方框以中断),但是没有更多的代码执行。我把println()放在了while循环之后,而没有打印出来,并且我已经注释掉了循环中的所有内容-没有效果。在重新启动Eclipse之前,我的计算机运转异常嘈杂。

在第2种情况下,程序继续运行,直到遇到第一种情况为止。

所有四种链接方法均已测试并且可以工作。我尝试过重新启动计算机,甚至还尝试重新安装Java(版本1.7.0_45)。我不知道是什么原因造成的,我们将不胜感激。

谢谢!

Roshan shahukhal

请查看以下代码行...不应使用任何分号来终止while循环!!!

while(flip != 0);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

While条件下循环打印整数

来自分类Dev

While循环不会在错误条件下退出

来自分类Dev

在比赛条件下循环

来自分类Dev

在R条件下循环

来自分类Dev

在while循环条件下如何执行多个命令?

来自分类Dev

while循环条件下的语法是什么?

来自分类Dev

while循环条件下的is_double函数

来自分类Dev

gdb的“监视”命令打破了我的循环?

来自分类Dev

目标C做while循环不会在错误条件下退出

来自分类Dev

Python:在Elif条件下循环

来自分类Dev

循环条件下rand()的行为

来自分类Dev

Python打破了while循环+异常

来自分类Dev

mpirun 打破了 bash 中的 while 循环

来自分类Dev

如何使具有多个条件的while循环在真实条件下停止?

来自分类Dev

它打破了我在C ++中的for循环吗?

来自分类Dev

Python:While循环,在不同条件下执行相同的代码。优雅与开销

来自分类Dev

在while循环条件下更改使用string.find()的值

来自分类Dev

什么是美元?在while循环的条件下,以下脚本中的var

来自分类Dev

Python:While循环,在不同条件下执行相同的代码。优雅与开销

来自分类Dev

如何在嵌套数组对象数组的条件下使用 While 循环?

来自分类Dev

如果内部函数在某个条件下失败,则跳过 bash while 循环

来自分类Dev

我需要遍历数组并在某些条件下添加元素

来自分类Dev

我想在特定条件下使用“按钮触发器”更改线条颜色

来自分类Dev

在for循环条件下反复调用getter

来自分类Dev

在for循环的条件下多次调用属性吗?

来自分类Dev

将复合语句置于for循环的条件下

来自分类Dev

在某些情况下,在循环条件下线程冲突

来自分类Dev

在循环条件下评估表达式

来自分类Dev

在循环条件下使用count($ arr)可以吗

Related 相关文章

  1. 1

    While条件下循环打印整数

  2. 2

    While循环不会在错误条件下退出

  3. 3

    在比赛条件下循环

  4. 4

    在R条件下循环

  5. 5

    在while循环条件下如何执行多个命令?

  6. 6

    while循环条件下的语法是什么?

  7. 7

    while循环条件下的is_double函数

  8. 8

    gdb的“监视”命令打破了我的循环?

  9. 9

    目标C做while循环不会在错误条件下退出

  10. 10

    Python:在Elif条件下循环

  11. 11

    循环条件下rand()的行为

  12. 12

    Python打破了while循环+异常

  13. 13

    mpirun 打破了 bash 中的 while 循环

  14. 14

    如何使具有多个条件的while循环在真实条件下停止?

  15. 15

    它打破了我在C ++中的for循环吗?

  16. 16

    Python:While循环,在不同条件下执行相同的代码。优雅与开销

  17. 17

    在while循环条件下更改使用string.find()的值

  18. 18

    什么是美元?在while循环的条件下,以下脚本中的var

  19. 19

    Python:While循环,在不同条件下执行相同的代码。优雅与开销

  20. 20

    如何在嵌套数组对象数组的条件下使用 While 循环?

  21. 21

    如果内部函数在某个条件下失败,则跳过 bash while 循环

  22. 22

    我需要遍历数组并在某些条件下添加元素

  23. 23

    我想在特定条件下使用“按钮触发器”更改线条颜色

  24. 24

    在for循环条件下反复调用getter

  25. 25

    在for循环的条件下多次调用属性吗?

  26. 26

    将复合语句置于for循环的条件下

  27. 27

    在某些情况下,在循环条件下线程冲突

  28. 28

    在循环条件下评估表达式

  29. 29

    在循环条件下使用count($ arr)可以吗

热门标签

归档