2015-06-22 39 views
0

这个算法做出了船的路线比作很多其他ships.I都知道哪些船舶不跨过第一one.I的路径想象,告诉其船来解决这个与坐标系中的第一条船的路线没有公共坐标。Java循环控制

第一回路计数其他船只,我比较第一个。

第二个循环统计实际船舶(与第一个船舶相比)的每个运动(从中建立船舶的路径)。每个运动有2个坐标。

第三回路应将其他船舶的坐标(由第二个回路给出)与第一艘船进行比较。

在第三圈,我给一个条件:如果两个坐标等于其路径的第一船的COORDS,整个该死的东西应该再次从第一个循环,这意味着其他船舶计数开始。 (继续关键字)

如果第二个循环可以结束,我将优胜船的索引添加到我的ArrayList'goodships'。


问题:没有船只被添加到ArrayList,虽然我的输入坐标肯定有从第一艘船的COORDS不同。


ArrayList<Integer> goodships = new ArrayList<>(); 

    first: for (int i = 1; i < control.size(); i++) { 

     char[] actdirections = control.get(i).toCharArray(); 
     int[] actualship = new int[2]; 

     second: for (int j = 0; j < actdirections.length; j++) { 
      if (actdirections[j] == 'E') { 
       actualship[0]--; 
      } else if (actdirections[j] == 'D') { 
       actualship[0]++; 
      } else if (actdirections[j] == 'N') { 
       actualship[1]--; 
      } else if (actdirections[j] == 'K') { 
       actualship[1]++; 
      } 
      third: for (int x = 0; x < firstship.length; x++) { 
       if ((actualship[0] == firstship[x][0]) 
         && (actualship[1] == firstship[x][1])) { 
        continue first; 
       } 
      } 
     } 
     goodships.add(i); 
    } 
+0

你在阵列'actualship'期待什么样的价值观?还有,为什么你在第一个循环中设置了“i = 1”?你确定数组'actdirections'总是有大写的值(E/D/N/K)吗? – Arvind

+1

调试器中会发生什么?逻辑是否像你期望的那样流动? –

+0

是尝试使用调试器或简单的使用'的System.out.println(“东西”)'在不同的点,并尝试调试 – Noober

回答

0

我写了一个新的导入文件,与每一个场景测试程序,它似乎是工作。以前的导入文件包含120多个不同坐标的不同的船只,它没有2条具有完全不同路线的船只。对不起,你的时间。

然而,IM好奇,如果该溶液是存储器高效。或者这是更好的方法?