Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 开关盒在第一次选择后重复使用同一个盒,如何在使用前重置或冲洗它才能正常工作?_Java_Switch Statement_Reset_Flush - Fatal编程技术网

Java 开关盒在第一次选择后重复使用同一个盒,如何在使用前重置或冲洗它才能正常工作?

Java 开关盒在第一次选择后重复使用同一个盒,如何在使用前重置或冲洗它才能正常工作?,java,switch-statement,reset,flush,Java,Switch Statement,Reset,Flush,Switch case第一次运行正常,但会反复使用相同的初始选项。我需要在这段代码运行之前重置它,以便它在需要时选择不同(或相同)的情况 这是一个学校项目,一只狐狸追逐一只兔子。我必须给兔子编码。我已经开发了开关案例,以便使用它与灌木丛的接近度作为打开的参数。这决定了兔子会做什么。它第一次正常工作,但在移动后继续使用相同的案例,并且上一个案例在下一回合再次运行。经过一些研究,我发现我应该在do-while语句中使用一些标志来退出循环,我确实这样做了,但同样的问题仍然存在 if (noMansLa

Switch case第一次运行正常,但会反复使用相同的初始选项。我需要在这段代码运行之前重置它,以便它在需要时选择不同(或相同)的情况

这是一个学校项目,一只狐狸追逐一只兔子。我必须给兔子编码。我已经开发了开关案例,以便使用它与灌木丛的接近度作为打开的参数。这决定了兔子会做什么。它第一次正常工作,但在移动后继续使用相同的案例,并且上一个案例在下一回合再次运行。经过一些研究,我发现我应该在do-while语句中使用一些标志来退出循环,我确实这样做了,但同样的问题仍然存在

if (noMansLand == false) {
  needDirection = true;
  do{
      switch (directionToBush) {
        //N-------------------------------------------------------
        case 0:
            if (look(7) == Model.BUSH) {
                if (distance(7) == 1) {
                    currentDirection = 6;
                    if (look(6) == Model.BUSH) {
                        if (distance(6) == 1) {
                            currentDirection = 5;
                        }
                    }
                }
            } else {
                //WANTED DIRECTION
                currentDirection = 7;
            }
            //FOX ESCAPE PLAN
            //code...
            needDirection = false;
            return currentDirection;
        //E-------------------------------------------------------
        case 2:
            //similar code...
        //S--------------------------------------------------------
        case 4:
            //similar code...
        //W--------------------------------------------------------
        case 6:
            //similar code...
     }while(needDirection == true);
 }
还有很多代码,我们会很高兴地向大家展示整个过程以寻求帮助。游戏在一个网格界面上运行,在这个界面上,狐狸和兔子轮流在6个方向中的1个方向上“看”和移动一个网格(我在剪断开关代码时只显示了4个基数)。我让我的兔子寻找最近的灌木丛,让狐狸追着它,直到马克斯转身过去。兔子很好地到达最近的灌木丛,当距离灌木丛达到1距离时,将“noMansLand”变为false,并启动开关箱块。第一圈的动作和文字完全一样,兔子朝着正确的方向移动,但在下一圈的兔子身上,它继续着同样的动作,就像灌木朝着移动前最后一圈的方向一样。我假设它正在用开关盒存储旧方向,但我不知道如何重置或刷新此数据

switch (directionToBush) {
directionToBush为0

在哪里换的?不是在你的片段中!
如果未更改,则在所有循环迭代中保持为0。

如果可以显示开关大小写变量“directionToBush”的初始化位置以及在开关大小写中如何更改,则会有所帮助。只要您根据具体情况不断更改此变量,您就不会有问题。没有必要重置任何内容。祝你好运

无需“重置刷新”,开关不会缓存或存储任何内容-您只需将变量
方向更改为bush
-只要其值相同,将执行相同的情况在某些
case
块中没有
break
语句。这是有意的吗?如果未引发异常或没有
return
语句,则可以期望执行从一个
案例
块流到下一个案例,即使该案例与该案例不匹配。看起来
while
只是一个无限循环,没有主体。没有
do
语句使其成为
do,而
。变量是静态的吗?我做了一个循环来搜索每个方向并存储狐狸和灌木丛的方向和距离:for(int I=Model.MIN_direction;我做了一个循环来搜索每个方向并存储狐狸和灌木丛的方向和距离:for(int i=模型最小方向;i