【问题标题】:Skipping To The Next if Statement from Inside a for Loop从 for 循环内部跳到下一个 if 语句
【发布时间】:2020-07-18 15:21:03
【问题描述】:

我在业余时间学习了一些Java,并且我是初学者,所以如果我不理解一些简单的概念,我很抱歉。我一直在尝试围绕已经制作的地图进行“机器人”移动。我一直在尝试将文本文件的行变成多个数组(即向前移动、向左转、向右转)。然后,我一直在尝试使用这些数组中的值来使机器人移动。基本上,如果文本文件说:

1 0 0
0 1 0
0 0 1

所以第一行是移动,第二行是左转,第三行是左转。这应该使机器人移动,然后不转动。然后它移动到下一列并且不移动,向左转,并且不向右转。无论代码多长,我都在努力确保它能够正常工作。我能够正确地将它放入三个数组中,但是我在使用这个 for 循环时遇到了问题。当循环执行并且值全部为 1 或以上时,它可以完美运行。但是,如果任何值为 0,则它完全退出循环并且机器人不会移动。任何帮助或建议将不胜感激!谢谢!

代码如下:

public static void robotMove(Robot x) throws Exception {
  
     
     for (int i = 0; i < movedata.length; i++) {
     
        int y = movedata[i];
        int s = leftdata[i];
        int j = rightdata[i];
     
           for (int a = 0; a < movedata.length; a++) {
              
              if (y == 0) {
              //asking what to put here
              }
              else { 
                 again.Move(x, y);
              }
              
              if (s == 0) {
              //asking what to put here
              }
              else { 
                 again.Left(x, s);
              }
              
              if (j == 0) {
              //asking what to put here
              }
              else { 
                 again.Right(x, j);
              }
              
              
              
           }
     
     
     } 

【问题讨论】:

    标签: java loops for-loop if-statement


    【解决方案1】:

    假设movedataleftdatarightdata 是与您的示例的每一行相对应的三个大小相同的数组,但不知道again 是什么,但假设它是处理.Move() 的对象, .Left()Right()Robot x 进行的操作,我认为以下应该足够了:

    public static void robotMove(Robot x) throws Exception {
        for (int i = 0; i < movedata.length; i++) {
            if (y != 0) {
                again.Move(x, movedata[i]);
            }
            
            if (s != 0) {
                again.Left(x, leftdata[i]);
            }
    
            if (j != 0) {
                again.Right(x, rightdata[i]);
            }
        }
    }
    
    • 您只能在 movedata 中循环一次,我已经删除了第二个嵌套循环。
    • 如果值为0,则您不想执行任何操作。因此,您不需要 else 部分,只需将代码放入 if value != 0

    从代码的角度来看,如果不是让一些if 来注意值不是0,您可以直接在方法.Move().Left().Right().

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多