2017-04-02 95 views
0
public class Robot 
{ 
    public static void main(String []args){ 

     ArrayList<String> list = new ArrayList<String>(); 
     String path = ""; 
     int N = 2; 
     int ol1_right = 1; 
     int ol1_down = 1; 
     int ol2_right = 1; 
     int ol2_down = 1; 
     buildPath (right, down, path, allPaths, N); 
     System.out.println (allPath(grid)); 

    } 

    public void BuildPath (int right, int down, String path, 
     ArrayList<String> allPaths, int N){ 
      path += "(" + down "," + right + ")->"; 
      if (right == N-1 && down == N-1){ 
       allPaths.add(path); 
       return; 
      } 
      else if (right +1 == ol1_right && down == ol1_down) && (right +1 == 
      ol2_right && down == ol2_down);{ 
      return; 
      } 
      if (right +1 == ol1_right && down == N-1) || (right +1 == ol2_right 
      && down == N-1);{ 
      return; 
      } 
      if (right == N-1 && down +1 == ol1_down) || (right == N-1 && down +1 
      == ol2_right);{ 
      return; 
      } 
      if (right == N-1 || right +1 == ol1_right && down == N-1 || 
      right +1 == ol2_right && down == N-1){ 
       BuildPath (right, down + 1, path, allPaths, N); 
      } 
      else if (down == N-1 || right +1 == ol1_right && down == ol1_down && right +1 == 
      ol2_right && down == ol2_down){ 
       BuildPath (right + 1, down, path, allPaths, N); 
      } 
      else 
      BuildPath (right + 1, down, path, allPaths, N); 
      BuildPath (right, down + 1, path, allPaths, N); 
    } 
} 

对不起,即时通讯仍然是新的这种事情,我坚持试图让这个程序工作,但有点卡在哪里去下。我遇到如“非法表达式开始”(使用||和&时抛出)或“不是语句”(路径+ =“(”+ down“即时通讯试图做的是让(机器人)沿网格移动,同时只能向下和向右移动,但也有能力将网格的某些部分标记为禁区。任何帮助将不胜感激,我知道这一切看起来很可怕,但只是试图得到这个窍门,所以对任何菜鸟错误或愚蠢的错误仍然非常新的抱歉:)Abit卡住了为什么我不能得到这个工作:/

+1

因为ISN 't的JavaScript一开始 –

+0

对不起发誓我打了java – Daniel

+0

你好,欢迎来到丹尼尔StackOverflow。你应该在你的问题中包含哪一行会引发编译错误或异常,可能是完整的堆栈跟踪,并告诉我们你想实现的目标。另外,如果我是你,我会阅读关于jUnit以及如何单元测试你的代码。这将大大帮助你找出问题的出处,并导致更干净的代码作为副作用。 –

回答

0

从我看到的(以及我的IDE给这个代码的错误), 你有一些基本的编译问题。

在该方法主要(字符串[]),参照该行:

buildPath (right, down, path, allPaths, N); 

您没有在主定义的VARS “右”, “下”, “allPaths”。这些是BuildPath(int,int,String,ArrayList,int)中的参数的内部名称,您不能从外部使用它们的名称。

这同样适用于什么是构建路径发生(INT,INT,字符串,ArrayList中,INT),你不能因为他们只在定义使用 “ol1_right”, “ol1_down” 主(字符串[])

另一个独立的问题是在这条线:

path += "(" + down "," + right + ")->"; 

添加+下来

还有一个问题是,在if语句分号:

else if (right +1 == ol1_right && down == ol1_down) && (right +1 == 
    ol2_right && down == ol2_down);{ 

应该是(删除;,并添加外):

else if ((right +1 == ol1_right && down == ol1_down) && (right +1 == 
    ol2_right && down == ol2_down)) { 
+0

谢谢!非常有帮助:)非常感谢 – Daniel

0

有一些问题,对于初学者Main()你有

int ol1_right = 1; 
int ol1_down = 1; 
int ol2_right = 1; 
int ol2_down = 1; 

您声明和初始化,但随后尝试访问从BuildPath()不用将它们作为参数。你不能那样做,因为在Java中,变量的作用域被限制在它所定义的块中,除非你另有指定。

在你的情况下,你可能需要将这四个变量移动到BuildPath()本身。再说一遍,你似乎永远不会改变它们,所以我会让它们中的一个不变。

此外,list似乎并不像它被使用,所以它可能是多余的。

不是Java的人,我没有一个编译器方便地告诉你到底发生了什么问题。尝试制作一个新文件并逐个添加代码并查看编译器的抱怨。

如果可以的话,如果您在不了解Java的语法的情况下进行递归,那么在我看来,您正在超越自己。我会集中精力学习至少首先的基础知识。